For my CS class on embedded systems, there are 124 students this year. They are working on an assignment in small teams of 4. They have been given some sample code to start, and will be working of developing a real-time solution for environmental monitoring.
We have Office 365, so they are encouraged to use "Planner" to help them self-organise.
We use Moodle for the final coursework submission.
Both of these are integrated into our AD name server.
Where github sits is in the day to day management of shared software. We want to encourage both a healthy personal software development process (pull, branch, develop, test, merge) as well as learn to coordinate and share work.
What we are looking at closely are the following outcomes:
Can GitHub help us resolve the rare occasions has a team member that is not engaged. The commits may form part of the evidence to support such a claim. In an ideal world, GitHub would be integrated into the active directory.
Whether using version control liberates students to experiment without fear of damaging the main branch.
How it can streamline the process of providing formative feedback. I have asked all students NOT to email me code, but to use GitHub. This allows me to fork, try, make suggestions / comments and perform a PR. This is also a good way for them to learn how to manage pull requests.
For the future, automated testing something we wish to explore.
Because we cannot officially match up github usernames to verified identities in our AD (set at enrolment), we're not able to use GitHub for submission of summative work. For that, they need to clone and upload a final zip to Moodle.
The same model is applied to my iOS development module. From next year, we are also considering using Git for VHDL and Quartus projects with the electronics students.