Back to GitHub.com

GitHub Education

GitHub Education

Classroom guide

A step-by-step guide on setting up your GitHub Organization for classroom use.

Classroom guide

A step-by-step guide on setting up your GitHub Organization for classroom use.

Deprecation Notice:

GitHub Classroom automates the manual processes described in this guide and is the recommended way to teach with GitHub.

Continue to GitHub Classroom

We're here to help. If you get stuck or have any questions about using GitHub in the classroom, please ask a question in the repository or send us a note.

Have ideas about how this guide could be better? Send us a pull request.

Creative Commons License

Using repositories

First, follow the instructions to set up assignment repositories. Once created, the repositor(ies) should be "seeded" with boilerplate content. This may just be a simple README, but could include a starter source code file, main() function, etc.

Project pages

If the students need to provide background materials, documentation, or blog posts about their project, you can have them:

Automated testing

Automated testing (often referred to as part of continuous integration, or "CI") is a great way to quickly verify students' solutions. Your test suite could include any of the following:

There are lots of tools and services that can run automated tests, including:

These tools can be configured to run the tests every time new code is pushed up to a student's repository using webhooks, though some do the setup automatically.

Collecting assignments

The recommended mechanics use for collecting assignments depends on whether you use the fork or sandbox strategy. In either case, feedback can be given inline in pull requests or commits, or by opening issues in the student's repository for them to fix. This can be done by instructors, though you may consider incorporating peer code review as a way for students to practice giving and receiving feedback. Note that you may need to grant students read-only access to one another's repositories to allow them to see the contents and leave comments.

One GitHub feature that may come in handy is using the Network and contributors graphs, as well as the list of commits. As was pointed out in our teacher community,

Having the github analytics have been great -- I just have to look at the contributors graph and quickly scan the commit logs. I can see who did how much and when in just a couple of seconds. I can also see the ebb and flow of work on the project.

Be warned, however: don't take the commit metadata (or graphs generated from them) as gospel; a savvy student could modify the commit author(s) or timestamp(s) after the fact.