Many teachers are suddenly faced with learning how to teach remotely for the first time. We know you’re concerned with making sure your students still receive the education they deserve. With recent changes to school schedules, we’re actively working with you—the educators—to keep your curriculum going remotely. We can help make online coding assignments manageable through automated distribution, insight into student participation, progress checking, and autograded assignments.

Sign up for a webinar

Starting tomorrow, we’re hosting webinars and sharing content to help you transition to managing online courses. Through GitHub Classroom, we can support you in running private assignments, project ideas, and student assessment.

Register for a webinar

GitHub Classroom Starter Guide

We understand not everyone can make the webinar sessions, so we’ve created a guide to highlight the key topics we’re covering. To get started right away, visit GitHub Classroom, and click Accept an assignment.



First steps

If you haven’t already, create an organization—an umbrella account where you can store all of your repositories. GitHub Classroom generates a repository for each student in your course, and those repositories live in your organization. Create as many organizations as you need and set them up in a way that will work best for you. For example, you might want one organization for your classes, one for each class, or one per semester. Members of our Education Community have discussed the various ways they set up organizations.

Next, make sure you have starter code in a repository—a collection of all of the code and instructions for projects, assignments, applications, and more. Your assignment might include code from an existing public project, so your starter code might be someone else’s public repository. Alternatively, you might have written the code that your students need for your assignment and stored it in your own repository. If you own the repository you plan to use for your starter code, make sure it’s a template repository, so new repositories can be generated with the same directory structure and files.

Optional: Upgrade your organization with GitHub Education benefits for teachers

You can apply for GitHub Education benefits for teachers. Faculty who are verified for GitHub Education benefits can automatically upgrade any organization to the GitHub Team plan for free. This gives you the option to generate unlimited private repositories with unlimited collaborators. Each student will have their own repository of your starter code, stored in your organization. With private repositories, students won’t be able to see each other’s work.

When creating a new organization, choose the free plan option. Then, you can find the offer to upgrade your organization in the GitHub Teacher Toolbox listed under GitHub as “Self-serve free Team plans to academic organizations you own.” You can skip the teacher verification if you’d like to dive right into GitHub Classroom. Classroom is free for anyone to use even if you’re not verified for GitHub Education benefits, and you can get started with the following guide without upgrading your organization.

Your first GitHub Classroom assignment

Navigate to GitHub Classroom to create your first assignment. If this is your first time using Classroom, you may need to authorize the application for your account.

Create a classroom

Let’s create your first classroom.

Each classroom you create will be associated with an organization. Choose the organization where your students’ code should live. You can use the same or different organizations as you create more classrooms.

If you didn’t create an organization earlier, click Create an organization and return to GitHub Classroom when you’re finished. Check out our first steps if you need tips on creating an organization.

If you already have an organization, click Go grant access. The first time you add an organization, you’ll need to give Classroom permission to manage it.

Return to GitHub Classroom after you’ve selected and authorized your organization. Going forward, you’ll be able to select any organization you’ve already authorized or add a new organization when you create a new classroom.

Select your organization and name your classroom.

Now you can add your teacher’s assistants (TAs) and class admins to your organization so they can help you manage your class. Adding admins to your organization will take you away from GitHub Classroom, so don’t forget to come back.

Once you’ve granted access to your admins in your organization, give them the unique classroom URL to access your course in GitHub Classroom.

Inviting students

There are several options for inviting students.

Link to a learning management system (LMS) and import a roster

Upload a local CSV file with student information

Enter student names or IDs into a text field (one on each line)

For now, click Skip on using an LMS and add student IDs in text in the next view.

If needed later, you can edit the student roster in the Students tab.



Set up an assignment

Let’s create our first individual assignment. Give your assignment a title. Later, each student will generate their own repository named with your assignment title and their name.

By default, visibility for student repositories is set to public, but if you’ve upgraded your organization to GitHub Team, you’re able to choose a private option. Making this selection means that each student’s individual assignment repository will be private.

Next, import your starter code. If you created your starter code earlier you should have a template repository ready to go, which will clone more quickly than a regular repository.

Find your starter code by typing an organization and repository name until it appears in the list. You can use any public repository or private repository that you have permission to access.

Does your assignment have a deadline? Add the due date and time.

Would you like to use our autograding feature to run tests as your students submit code? Learn how autograding works in our Classroom help docs.

You can give your students full admin permissions on their repository if your assignment requires them to do advanced tasks, or you can block them from having that access. With full admin permissions, students can perform tasks like running CI tools. You might want to block access if you want to prevent students from adding collaborators, changing branch protection rules, or making accidental changes to settings.

And finally, you can choose to enable feedback pull requests. With this option, a pull request automatically opens when a student accepts the assignment. This removes the friction of a student properly opening a pull request. You and your teaching assistants can give feedback on students’ code submissions inline on the changed files.

Congratulations! You’ve created your first assignment. Now you can share your unique assignment URL with your students.

Review assignments

You can watch as students accept the assignment and visit their repositories to take a look at their code. There are links provided to three review options: Review, View tests, and Go to repo.

Review takes you to the automatically generated pull request for a student’s repository. This is where you and your TAs can provide direct feedback for any line of code.

View tests shows the output of your autograding tests since the latest commit.

Go to repo takes you to the front page of that student’s assignment repository.

What your students see

When a student joins your classroom or accepts an assignment for the first time, they need to connect their GitHub account with your roster.

Going forward, when a student accepts the assignment, Github Classroom will clone your starter code, and they can get started in their own repository. From there they can practice the industry-standard workflow as they edit, commit, and push code changes.

Team assignments

Want to assign work to teams? Return to your classrooms view, select your classroom, and repeat the same steps to create a new group assignment instead of individual. Group assignments allow you to limit the number of students per group and re-use groups from past assignments.

Ready for the semester

And just like that, we’ve used our existing starter code to set up a new class and assignment in GitHub Classroom. Students can show iterations of their work, share the final product and get immediate feedback on how to improve their code with automated testing tools. For teachers, Classroom frees up time by automating repository creation and providing quick access to check student progress.

Get more from GitHub Classroom

We’ve shared just a few tips on getting started with Classroom, but there’s so much more it can do for you.