About 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.
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.
For a video demonstration of the creation of an individual assignment, see "Basics of setting up GitHub Classroom."
Prerequisites
You must create a classroom before you can create an assignment. For more information, see "Manage classrooms."
Creating an assignment
- Sign into GitHub Classroom.
- Navigate to a classroom.
- In the Assignments tab, create the assignment.
- If this your first assignment, click Create an assignment.
- Otherwise, click New assignment.
- If this your first assignment, click Create an assignment.
Setting up the basics for an assignment
Name your assignment, decide whether to assign a deadline, and choose the visibility of assignment repositories.
- Naming an assignment
- Assigning a deadline for an assignment
- Choosing an assignment type
- Choosing a visibility for assignment repositories
Naming an assignment
For an individual assignment, GitHub Classroom names repositories by the repository prefix and the student's GitHub username. By default, the repository prefix is the assignment title. For example, if you name an assignment "assignment-1" and the student's username on GitHub is @octocat, the name of the assignment repository for @octocat will be assignment-1-octocat
.
Type a title for the assignment. Optionally, click to edit the prefix.
![Assignment title and prefix](/web/20210824145509im_/https://docs.github.com/assets/images/help/classroom/assignments-assignment-title.png)
Assigning a deadline for an assignment
Optionally, you can assign a deadline to the assignment. Under "Deadline (optional)", click in the text field, then use the date picker to assign a deadline.
![Date picker for assignment deadline](/web/20210824145509im_/https://docs.github.com/assets/images/help/classroom/assignments-assign-deadline.png)
Choosing an assignment type
Under "Individual or group assignment", select the drop-down menu, and click Individual assignment. You can't change the assignment type after you create the assignment. If you'd rather create a group assignment, see "Create a group assignment."
Choosing a visibility for assignment repositories
The repositories for an assignment can be public or private. If you use private repositories, only the student or team can see the feedback you provide.
You can also decide whether to grant students admin permissions to the repository for an assignment. Grant admin permissions if the student should be able to perform administrative tasks for the assignment repository. For more information, see "About repository visibility" and "Repository permission levels for an organization."
Under "Repository visibility", select a visibility. Optionally, select Grant students admin access to their repository.
![Visibility options for assignment repositories](/web/20210824145509im_/https://docs.github.com/assets/images/help/classroom/assignments-choose-repository-visibility.png)
When you're done, click Continue to configure starter code and a development environment for the assignment.
!['Continue' button](/web/20210824145509im_/https://docs.github.com/assets/images/help/classroom/assignments-click-continue-button.png)
Adding starter code and configuring a development environment
Optionally, decide whether to provide empty repositories or starter code, and preconfigure a development environment for your students.
Choosing a template repository
By default, a new assignment will create an empty repository for each student on the roster for the classroom. You can optionally choose a template repository as starter code for the assignment. For more information about template repositories, see "Creating a template repository."
Note: The template repository must belong to your organization or be a public repository on GitHub.
Under "Add a template repository to give students starter code", select the Select a repository drop-down, then type a search query. In the list of results, click the template repository you'd like to use for starter code.
![Using the 'Select a repository' drop-down menu to find a template repository to use as starter code for an assignment](/web/20210824145509im_/https://docs.github.com/assets/images/help/classroom/assignments-click-template-repository-in-list.png)
When you're done, click Continue to configure automatic grading and feedback for the project.
!['Continue' button](/web/20210824145509im_/https://docs.github.com/assets/images/help/classroom/assignments-click-continue-button.png)
Choosing an integrated development environment (IDE)
You can optionally configure an assignment to use an integrated development environment (IDE). IDEs allow your students to write code, run programs, and collaborate without installing Git and a full development toolchain on the student's computer. If you choose an IDE for an assignment, students can still check out and run code locally on a computer with the necessary software. For more information, see "Integrate GitHub Classroom with an IDE."
To choose an IDE for the assignment, select the Add an editor drop-down menu and click the IDE you'd like your students to use.
![Using the 'Select an online IDE' drop-down menu to click an online IDE for the assignment](/web/20210824145509im_/https://docs.github.com/assets/images/help/classroom/assignments-click-online-ide.png)
Providing feedback for an assignment
Optionally, you can automatically grade assignments and create a space for discussing each submission with the student.
Testing assignments automatically
You can use autograding to automatically check a student's work for an assignment on GitHub Classroom. You configure tests for an assignment, and the tests run immediately every time a student pushes to an assignment repository on GitHub. The student can view the test results, make changes, and push to see new results. For more information, see "Use autograding."
Under "Add autograding tests", select the Add test drop-down menu, then click the grading method you want to use. For more information, see "Grading methods."
![Using the 'Add test' drop-down menu to click a grading method](/web/20210824145509im_/https://docs.github.com/assets/images/help/classroom/autograding-click-grading-method.png)
Define the parameters of your test case, like the name, commands, inputs, outputs, timeout, and points. When you're done, click Save test case.
!['Save test case' button for an autograding test](/web/20210824145509im_/https://docs.github.com/assets/images/help/classroom/assignments-click-save-test-case-button.png)
You can add more tests with the Add test drop-down menu, and you can edit or delete existing tests with or .
![Pencil and trash icons to edit or delete an autograding test](/web/20210824145509im_/https://docs.github.com/assets/images/help/classroom/assignments-autograding-click-pencil-or-trash.png)
Creating a pull request for feedback
You can automatically create a pull request where you can provide feedback and answer a student's questions about an assignment. For more information about the review of changes in a pull request, see "Reviewing changes in pull requests."
To create pull requests for the discussion of feedback, select Enable feedback pull requests.
![Checkbox for 'Enable feedback pull requests'](/web/20210824145509im_/https://docs.github.com/assets/images/help/classroom/assignments-enable-feedback-pull-requests.png)
To create the assignment, click Create assignment.
!['Create assignment' button](/web/20210824145509im_/https://docs.github.com/assets/images/help/classroom/assignments-click-create-assignment-button.png)
Inviting students to an assignment
By default, GitHub Classroom enables an invitation URL for each assignment you create. Students can accept and submit the assignment while the invitation URL is enabled. You can share the URL with your students on your LMS, course homepage, or wherever you post assignments. Students can also navigate to the assignment on GitHub Classroom if the student has already accepted an assignment for the classroom.
Warning: Be careful where you share invitation URLs. Anyone with an invitation URL for an assignment can accept the invitation and associate a user account on GitHub with an identifier in your roster.
You can see whether a student has joined the classroom and accepted or submitted an assignment in the All students tab for the assignment. To prevent acceptance or submission of an assignment by students, deselect Enable assignment invitation URL. To edit the assignment, click Edit assignment.
![Individual assignment](/web/20210824145509im_/https://docs.github.com/assets/images/help/classroom/assignment-individual-hero.png)
Next steps
-
Once you create the assignment, students can start work on the assignment using Git and GitHub's features. Students can clone the repository, push commits, manage branches, create and review pull requests, address merge conflicts, and discuss changes with issues. Both you and student can review the commit history for the repository. For more information, see "Getting started with GitHub," "Creating, cloning, and archiving repositories," "Using Git," and "Collaborating with issues and pull requests."
-
When a student finishes an assignment, you can review the files in the repository, or you can review the history and visualizations for the repository to better understand the student's work. For more information, see "Visualizing repository data with graphs."
-
You can provide feedback for an assignment by commenting on individual commits or lines in a pull request. For more information, see "Commenting on a pull request" and "Opening an issue from code." For more information about creating saved replies to provide feedback for common errors, see "About saved replies."