If you’re an educator like me who relied on GitHub Classroom to distribute coding assignments, collect submissions, and auto-grade student work, you’ve probably spent the last few weeks scrambling for a replacement. GitHub Classroom has been sunset, and many CS teachers are left wondering how to keep running their courses the way they used to.
The good news: there’s a new tool built specifically to fill that gap, and it’s free and open source.
Meet Classroom 50
Classroom 50 is a free, open-source tool from the Fifty Foundation, the nonprofit behind Harvard’s CS50, designed as a direct alternative to GitHub Classroom. It was announced on July 1, 2026, and it covers the same core workflow teachers relied on before: creating assignments, defining auto-graded correctness tests, and managing student submissions, all built on top of GitHub’s existing infrastructure.
That last part matters. Classroom 50 doesn’t run its own servers to store your class data. Classrooms live inside a GitHub organization you control, with student rosters and submission data stored in a dedicated repository. If you’re already comfortable with GitHub, the mental model will feel familiar.
You can use Classroom 50 two ways:
- A web application at classroom50.org
- A command-line tool, for teachers who’d rather script things or work from the terminal
What You’ll Need Before You Start
A couple of setup requirements are worth knowing about up front:
- A GitHub organization on a Team or Enterprise plan. Classroom 50 relies on Team-tier features like GitHub Pages and branch protection to keep things secure. If you’re a verified educator, GitHub Education offers free Team-tier organizations, so this usually isn’t a cost barrier.
- A Personal Access Token (PAT). During setup, Classroom 50 asks for a fine-grained service token with access to your organization’s repositories. This token powers the daily score-collection workflow that pulls in student results.
Setup itself is a guided, two-step process: run the automated organization setup, then paste in your service token to finish configuration.
How the Workflow Actually Works
Once your organization is set up, using Classroom 50 breaks down into a few clear steps.
1. Create a classroom. A classroom is just a named container for a group of students and their assignments; think one classroom per class period or per semester. You give it a name and a slug, and optionally a term to distinguish between different offerings of the same course.
2. Create an assignment. For each assignment, you can optionally attach a template repository that becomes the starting point for student work, set a due date, and choose whether it’s an individual or group assignment. There’s also an option to auto-generate a feedback pull request, so you can leave comments directly on a student’s code.
3. Define autograding tests. This is where Classroom 50 really earns the “auto-graded” part of the pitch. For each assignment, you can add tests of three types:
- Input/Output: feed input to a student’s program and check the output for an exact match, a regex match, or just that it’s included somewhere in the result.
- Run command: run a command and check for a specific exit code.
- Python (pytest): run a full pytest suite against the student’s code.
Each test can carry its own point value, timeout, and setup command, so you can weight correctness tests however makes sense for the assignment. Advanced settings also let you customize the GitHub Actions runner, specify a custom Docker image, and restrict which files are considered during grading.
4. Add students to the roster. You can add students individually by GitHub username (or by email, if they don’t have one yet) or bulk-upload a CSV. Students get invited to your GitHub organization and must accept before they can start on assignments.
5. Students accept and submit. You share a link; students accept it and receive a repo named after the classroom, assignment, and their username. From there, they submit through the CLI or by committing directly, which kicks off the autograding workflow and produces a scored release.
6. Collect and review submissions. Scores are aggregated on a nightly schedule by default, or you can trigger a manual collection at any time. The submissions view gives you a running class average, pass/fail counts, and per-student submission history, with sorting and filtering for larger classes. When you need the data outside the platform, there’s a one-click CSV export of all scores.
A Few Things to Know Going In
- Broad repo access. Because Classroom 50 automates so much of the GitHub workflow, it needs fairly broad read/write access to repositories in your organization. This came up in the community discussion around the launch, and the maintainers have confirmed it’s necessary for the tool to function, so it’s worth understanding before you connect it to an org that has other sensitive repos.
- English-only for now. Support for other languages, including Spanish, has been requested by the community but isn’t available yet.
- Active development. The project is genuinely young. It’s soliciting feature requests and bug reports through GitHub Issues, and the maintainers are responsive in the discussion forum.
Getting Help
The Fifty Foundation is running live training sessions for teachers getting started with Classroom 50:
- Friday, July 24, 1-2pm EDT
- Friday, August 14, 1-2pm EDT
You can register here. There’s also a full Wiki covering both the web interface and CLI setup, and a discussion forum where you can ask questions directly to the team and other educators making the same transition.
The Bottom Line
If GitHub Classroom’s sunset left a hole in how you run your course, Classroom 50 is worth a serious look. It replicates the workflow educators already know: template repos, auto-graded tests, roster management, submission tracking, all without locking your data into a third-party service, since everything lives in GitHub infrastructure you control. For a tool that’s barely a few weeks old, it’s already a credible, free replacement.








