Here is the general workflow for each new course and for each new assignment. Not all of the steps can be completed using abc-classroom - some steps require that you use the GitHub classroom web interface (due to lack of API for GitHub classroom).
For each course:
create a new local course in abc-classroom
create a new GitHub Classroom course
For each assignment:
develop course materials
create a template repository from the assignment materials
create an assignment on GitHub Classroom and link the template repository to the GitHub Classroom assignment
give students the assignment link
students accept assignment, complete work, and submit by pushing to their github repo
clone student repos and copy submitted files into course materials directory
copy feedback reports from course materials to student repos and push back to students
abc-classroom is implemented as a set of command-line scripts. A summary of each script, with links to more documentation:
abc-init : sets up token-based access to GitHub; see Setup git and GitHub
abc-init
abc-quickstart : sets up a new course; see Create a New abc-classroom Course
abc-quickstart
abc-new-template : creates a git repository from a directory of course materials and pushes the repo to your GitHub organization to be used as an assignment template; see Create a New Template Repository
abc-new-template
abc-update-template : updates an existing template repository based on local changes to course materials; see Updating an Existing Template Repository
abc-update-template
abc-clone : clones each of the student repositories and copies submitted assignments into your course materials directory; see Collect Student Assignments
abc-clone
abc-feedback : copies feedback reports from your course materials directory into local student repositories and then pushes to GitHub; see Push Feedback to GitHub Student Repos
Each abc-classroom course is a separate directory, with a specific structure:
course_directory/ (created by quickstart) |-- config.yml |-- roster.csv (student list) |-- course_materials (where you develop / mark your course files) | |--- release (materials to be given to students) | |--- assignment1 | |--- assignment2 | |--- submitted (collected from students) | |--- student1 | |--- student2 | |--- feedback (reports to be given to students) |-- template_repos (location of GitHub Classroom template repositories) |-- clone_dir (destination for cloned student repositories)
Running abc-quickstart sets up the basics, and other abc-classroom scripts create directories as needed. The only directory you need to create and manage yourself is the course_materials, and there are more details about that in Organize Assignments. The names of directories are configurable in config.yml - see Configuration.
config.yml