Use Case 2: Setting up Student Repositories
This use case is the more typical use case for github classrooms. This allows for the creation of repositories within your organization for your students.
In this section of the notes, I will provide the steps that you will need to use and discuss each of the settings.
Step 1: Create an "Assignment"
- Go to classroom.github.com and make a new assignment
- If you haven't created any assignments click the "create your first assignment" -> "Create a blank assignment" button/dropdown within the tile for the classroom you want to use
- otherwise click on name link for your classroom, then use the "new assignment button".
Step 2: Assignment name
Give your assignment a name
- this will be part of the repository name.
- If you wish to shorten the url, change the tag
- Watch out for length! there is a limit of around 50 characters for the repo name so you don't want to make this title/tag really long because as some sort of unique identifier will be added for each student. The exact identifier depends on the type of assignment you create
- something short like a1 works well
Don't put in a deadline. This deadline is very strict. Recommend not using it at all to avoid issues
Step 2b Individual vs Group Assignments
Individual vs group assignments seems like a pretty straight forward choice. However the choice has an effect on the names of your repositories. If you choose to create an individual assignment, the assignment name + the student's github user name will be used for the repository name. If you depend on the url name to identify your students, it may become hard for you to find them if their github user name has nothing to do with their real names. One way around this is to have students submit the url's for their repository.. this avoids the url name issue.
If you want to better control the URL created, always choose group assignments even when you want individual assignments. All you need to do is limit the maximum size of each group to 1. By choosing group assignments, you can have student enter some identifier (like their actual name) for the team name. Be aware of the length limit on the team name. I had some students with really long names all in the same group and they had to cut out parts of id out to fit under the limit.
Step 2c: The rest
- Name your set of teams:
- name your set of teams something that identify the grouping. For example, if you are doing group assignments for individual repos, name the set of teams "individuals". If you need to set up another individual assignment you can choose that same set of teams and students will not need to retype their identifier when they try to create a team
- Maximum members per team: -enter whatever you want the maximum number of members to be. Please note that there are flaws to this method of repo creation. Suppose you tell your students they can work alone or as a team of two. One student decides to work alone. Another student then joins that student's team and copies their assignment. To avoid this issue, you may need to create multiple assignment links for each group size.
- Maximum teams: unless you want to control number of teams, leave this setting alone
- Repository visibility
- I prefer using private repos for assignments. However you can make it public.
- Do Not check the grant students admin access to their repositories...
- Hit continue
Step 3: Page two of assignment setup
In the "Add a template repository ..." box:
A template repo containing all the starter code needed for an assignment is really useful. You can also add in specification documents and to this repo. This helps provide students with a starting point for their assignment. However, Once a student creates the assignment with the given repo, they will not get the changes made to the template after the fact. Thus it is important to be careful with the files in the assignment template repository because you can't change it later eaily.
in the Github CodeSpaces box
This box is not nearly as exciting as it sounds. If codespaces are enabled you can use it without choosing it from drop down. I recommend not doing it because I thought it created more confusion than anything else last time I tried.
Step 4: Page three of the assignment setup
This page is for feedback. You can use it to set up various tests for the codes your students commit. I have found this to be too restrictive and instead prefer to write my own actions instead.
Step 5: Get Link and provide it to students
Provide the link from the assignment page (the same one you used to accept the assignment)
- To find the link, go back into your classroom and choose the link from the drop box beside the assignment
When students use the link they will see something like the image below. Have them hit the join button. Note how students cannot create another team. This is because of the way you had set up the "assignment":
Once they accept the assignment they will have read access to this private repository.