This is a brief guide for how we set up and use GitHub Classroom when teaching Computer Science lab classes at the University of Minnesota Morris.
- Create a GitHub organization
- Create a GitHub Classroom
- Optional: Set up Slack organization
- Setting up individual labs
- Shutting it all down
The first step is to create a GitHub organization using the "Free" Tier for this particular semester of the course. This will hold all the student repositories in a single place, which makes it easier for both faculty and students to keep track of things. We've typically used a specific naming scheme to make it easier to find things. In Systems Practicum (CSci 3412), for example, we've used https://github.com/umm-csci-3412-fall-2021.
This guide to GitHub Classroom provides details on how to upgrade your newly created GitHub organization with GitHub Education benefits for teachers. This will require you to enroll in the GitHub Education Program.
The benefit is that there are more minutes for Github Actions being applied to private repositories (which is good for FERPA considerations).
The Github Actions allow students to get immediate feedback upon submission of the repository (public or private).
(Note: student's can run the tests locally too before they update their repository.)
We will see if there are enough minutes alloted for the upgraded oranization tier to support this, or whether students will need to use public repositories (which have no limit on the amount of CPU-time used by the GitHub Actions, but can, in principle, be accessed by fellow classmates.
In any event, here's how as of 6/20/2022, the organization is upgraded (for free) to the "Team Tier".
- With a browser go to the Education Site and log in with your
github.com
account. - Click the
Upgrade to GitHub Team
button - Select your organization
Upgrade to GitHub Team Button: (At https://education.github.com/globalcampus/teacher
)
Select Organization: (In this example I will select umm-csci-3412-fall-2022)
These were the original directions from the link above:
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 might find it useful to create a logo for this semester's course. As someone who's taught this course many times, Nic found it helpful to have a slightly different logo each semester to make it easier to distinguish different semesters.
Adding your TA(s) as members of the organization will ensure that
they can see all the repositories and have the ability to engage in
things like code reviews. If you are using private repositories
you may need them to be set up as Owner
(or some other elevated
status) of the organization so they can access the private repositories.
I know that in the early days of GitHub Classroom you had to manually add all the students as members of the new organization. I think that's been changed and that GitHub Classroom may automatically add them now, but I'm honestly not sure.
If you do have to add them, it's a nuisance because you don't know in advance what their GitHub usernames are. So you'll have to either ask them before the first lab starts (and hope they repsond to whatever request you make) or be prepared to add them "on-the-fly" in the first lab session.
After you have an organization, you can create a GitHub Classroom
that uses that org. Again, we tend to use a common naming scheme, like
umm-csci-3412-fall-2021-classroom
.
In the process of setting up the classroom, one of the questions is what organization you want to use; this is where you'd plug in the organization you created up above.
We've historically set up Slack organizations for each semester of our lab courses as a way for students to talk to us and each other about the labs. If you're so inclined, I would definitely recommend it.
I also use the same logo that I created for the GitHub organization for the Slack organziation, which helps me and the students keep those things straight.
Now that all that infrastructure is set up, you'll need to set up each individual lab. You could do that all up front, or do it one lab at a time as the semester progresses. (I always take the latter approach, but that's mostly due to lack of organization and poor planning rather than any particular advantage to that process.)
UPDATE_ME
so it's clear to everyone
involved that they're not looking at a working link. Otherwise you'll
probably end up with plausible looking links that point into last year's
GitHub Classroom, which isn't good.
For each lab you need to:
- Add the assignment in your GitHub Classroom
- You can set the deadline, but I'm not sure it actually does much (or or anything).
- Set it as an individual or group assignment as appropriate for the lab.
- I usually set the "Name your set of teams" field to something like "Lab 3 teams", but I don't think it actually matters much.
- Set the max/min team sizes if you care.
- Set the repo to be public or private as appropriate.
⚠️ Private would be nice, but see the note above about GitHub Actions credits. - I would probably grant students admin access to their repository. They usually don't need it, but every now and then someone finds it useful and it's easier to grant it here than have to piecemeal it later.
- Use the "primary" repo in the
UMM-CSci-Systems
organization as the template repository for the assignment.
When the semester is over you should probably archive the classroom so that it's clear that it's no longer an active workspace. We should probably also be archiving all the individual repositories, but that's a huge amount of work, so I wouldn't bother. I am working on creating a tool to automate that process, though, and if I get that going then it would make sense to use it when the semester's over.