Skip to main content

About assignments

You can use individual or group assignments in GitHub Classroom to teach students and grade their work.

Note: In January 2024, GitHub Classroom changed the way student repositories are created from starter code repositories. Previously, the process required starter code repositories to be templates, and GitHub Classroom created a new repository for each student based on that template. With the change, student repositories are now created by forking the starter code repository.

This change addresses a frequently requested feature from teachers: the ability to change starter code after an assignment has been accepted by students.

You can read more about this change on the GitHub blog.

This feature is in public beta and subject to change.

About assignments in GitHub Classroom

Assignments are coursework created for students in GitHub Classroom. You can use assignments to test and grade your students, or to help your students practice their learnings.

With GitHub Classroom, you can create individual assignments, to be completed by a single student, or group assignments, to be completed in teams. For more information, see "Types of assignments."

Each assignment has a title and an optional deadline. You can choose the visibility of repositories that GitHub Classroom creates and choose access permissions. You can also automatically grade assignments and create a dedicated space to discuss the assignment with the student.

Optionally, you can enable feedback pull requests on assignments. If you enable this feature for an assignment, GitHub Classroom creates a special pull request titled Feedback in the assignment repository for each student or group. For more information, see "Leave feedback with pull requests."

You can integrate a classroom with an IDE. Students can make changes to their assignment repositories through the IDE, or by checking out and running code locally with the appropriate software. For more information, see "Integrate GitHub Classroom with an IDE."

You can reuse existing assignments in any other classroom you have admin access to, including classrooms in a different organization. For more information, see "Reuse an assignment."

Note: You must create a classroom before you can create an assignment. For more information, see "Manage classrooms."

Types of assignments

You can create both individual assignments and group assignments with GitHub Classroom.

Individual assignments

An individual assignment is coursework for each student who participates in a course on GitHub Classroom. The student is intended to complete an individual assignment without help from other students.

When a student accepts an assignment, GitHub Classroom automatically creates a new repository for the student. The repositories can be empty, or you can create the repositories from a template repository with starter code, documentation, tests, and other resources. Each assignment repository belongs to your organization account on GitHub.

For more information, see "Create an individual assignment."

Group assignments

A group assignment is collaborative coursework for groups of students on GitHub Classroom. Students can work together on a group assignment in a shared repository, like a team of professional developers.

When a student accepts a group assignment, the student can create a new team or join an existing team. GitHub Classroom saves the teams for an assignment as a set. You can name the set of teams for a specific assignment when you create the assignment, and you can reuse that set of teams for a later assignment.

For more information, see "Create a group assignment."

Further reading