GitHub Classroom Setup

A number of us are using GitHub Classroom because it allows instructors to create initial repositories with code (minimizing variation between repository setups) and has an easy-to-use client that allows downloading all solutions with just a few clicks.

  1. Visit GitHub Classroom
  2. Sign in, using an account with the email address, creating one if necessary. You should be on a page labeled "GitHub Classroom".
  3. Click on the New classroom button.
  4. It will ask you to select an organization for your new classroom, click on Grant access to an organization that is not listed.
  5. Click on the Organizations link on the left hand side of the page.
  6. Click on New organization.
  7. Select the $0 plan.
  8. Set an Organization account name. This name will prefix all repositories, so it should be short and all lower case and should incorporate your name in some way; I used "rwhc".
  9. Fill in the Contact email and set "This organization belongs to:" to My personal account.
  10. On the Welcom to GitHub page, where you can enter more email addresses, click Skip this step.
  11. Return to GitHub Classroom and click New classroom.
  12. Assuming you do not see your new organization listed, click on grant us access in the "ProTip!" section.
  13. Scroll to the bottom, find your new organization, and click on Grant.
  14. Return to GitHub Classroom and click New classroom.
  15. Select your new organization.
  16. Configure the Classroom name; assuming your organization captures your name, it should be adequate to just include the course, but you could possibly enter the section as well. I use rwhc-se2811.
  17. The next step adds other people as administrators; we typically don't have any. Click Continue.
  18. I Skip connecting to the LMS.
  19. Enter the email addresses of the students and click on Create roster
  20. Next, you need to request the ability to set up private repositories. Navigate to your classroom. and click Create an individual assignment.
  21. You should be on a page where you can set up the assignment, but the Private cannot be selected. Click on Apply for free private repositories.
  22. Fill out the form for the discount request. For "How do you plan to use GitHub?", I wrote
  23. Allow teams and individual students to use Git repositories and to submit solutions via Git.

Once the approval is granted, visit, scroll to the bottom, find your new organization, and click on Upgrade.

Setting up an assignment

You should now be set up with a GitHub classroom for your section(s).

  1. Visit GitHub Classrooms, select your classroom, and click on New assignmnet
  2. Select Create an individual assignment or Create a group assignment. This writeup assumes a group assignment, but an individual assignment should be similar.
  3. Set the assignment title and prefix. It's not clear where this is used, but it makes sense for the two to be the same.
  4. Make the repositories private. If this is not an option, you need to complete the above process.
  5. If you have initial code or a directory structure for them to use, create a GitHub repository containing the files. This repository can be private, but it must have Template repository set in the project settings page. Enter the repository name to browse for it.
  6. Set team options as appropriate. We generally have the teams create their repository using their login names.
  7. Ensure Enable assignment invitation URL is set. It does not seem important to give students administrative access.
  8. Click Create assignment.

GitHub will respond with a link to send to the students. I tell them the pattern to use to create the repository name. I require students to keep repository names all lower case; this simplifies access on Macs and Linux systems and increases uniformity.

GitHub's Classroom Assistant can then be used to download all projects with a few clicks.

Recommended Settings

By default, GitHub signs you up for a number of notifications. These are not useful for instructors. Log in to GitHub, select Settings from your personal menu in the upper right, click on Notifications, and turn off automatic watching and other settings for which you do not want emailed notifications. I clear them all.