It is commonplace among industry data science and software development teams to use a version control system such as Git and GitHub to manage their work. By contrast, in most academic programs the university’s Learning Management System (LMS) is the primary tool used for distribution and collection of student work on assignments and projects. In order to provide students exposure to the “tools of the trade” and establish a level of comfort in working with a version control system, GitHub can be used as an alternative method to an LMS for managing student work. GitHub provides a service called GitHub Classroom which makes it easy for educators to set up their course to make use of GitHub. The primary function of GitHub Classroom is to manage the automated distribution, collection and return of assignments to each student on a class roster.
There are multiple ways to utilize GitHub Classroom together with an automated grading system, for example by setting up continuous integration with a tool such as Travis CI. Among data science instructors, creating assignments in Jupyter Notebooks is a popular option. A tool called nbgrader can be used to automate grading of student notebooks.
The following instructions will walk through setting up a course using GitHub Classroom for assignment distribution/collection together with nbgrader for automated grading of assignments. A package called abc-classroom is used to further automate the connection between GitHub Classroom and nbgrader.