Classroom 50
We will use Classroom 50 for the assignments in this course. Classroom 50 is a free, open-source alternative to GitHub Classroom for distributing, managing, submitting, and grading programming assignments through GitHub.
This guide covers the typical student workflow: accept an assignment, clone its repository, work locally, submit your work, and review feedback. Your instructor’s instructions for a particular assignment always take precedence over this general guide.
For more detail, see the official Classroom 50 Web Student Guide and CLI Student Guide.
Prerequisites
Before you start, make sure you have the following:
A GitHub account. If you do not already have one, follow GitHub’s guide to creating an account. Use the same account throughout the course.
Git installed. Download Git from the official Git website. See this tutorial if you need help installing Git.
Access to the course’s GitHub organization. We will add you to the course roster later during the semester. GitHub may email you an organization invitation. You can accept it from the email, from Classroom 50, or by opening the assignment link.
The Classroom 50 student command-line tool (recommended). The
gh student submitcommand provides the most reliable submission workflow. It requires the GitHub CLI and the Classroom 50 student extension. After installing the GitHub CLI, run:
gh extension install foundation50/gh-studentFor complete setup instructions, see the official Classroom 50 installation guide.
Getting started
1. Accept the assignment
We will provide a Classroom 50 assignment link. Open that link and:
- Select Sign in with GitHub and authorize Classroom 50 if prompted.
- Confirm that you are signed in with the GitHub account you use for this course.
- Accept the invitation to the course’s GitHub organization if Classroom 50 shows one.
- Review the assignment information and select Accept assignment.
- Wait while Classroom 50 creates and configures your assignment repository. Do not click the button repeatedly.
- Select Open repository when setup is complete.
The repository is created in the course’s GitHub organization, not in your personal account. It is normally private, although an instructor may configure an assignment to use a public repository. Classroom 50 will warn you before creating a public repository.
Do not fork the starter repository yourself. Work only in the repository that Classroom 50 creates for you or your group.
If Classroom 50 reports that you are not yet a member, ask your instructor to add you to the course roster. Once the invitation arrives, accept it and try the assignment link again.
2. Clone the repository
Cloning downloads the assignment repository to your computer. On the GitHub page for your assignment repository, select Code and copy the HTTPS or SSH URL. Then open a terminal, navigate to the folder where you keep your coursework, and run:
git clone <repository_url>
cd <repository_folder>Replace <repository_url> and <repository_folder> with the values for your assignment. You only need to clone a repository once.
Before starting a new work session, enter the repository folder and download any remote updates:
git pullThis is especially important if you work on more than one computer, collaborate on a group assignment, edit files on GitHub, or your instructor updates the assignment workflow.
3. Work on the assignment
Read the instructions and inspect the starter files in the repository. Use the editor or development environment of your choice. Work incrementally and test your work as you go.
Classroom 50 may add administrative files such as .classroom50.yaml and files under .github/workflows/. Do not edit or delete them unless your instructor explicitly tells you to do so.
4. Commit and push your progress
A commit records a meaningful checkpoint in the repository’s history. Save your files, then run:
git status
git add .
git commit -m "Describe the completed change"
git pushCommit and push regularly. A commit exists only on your computer until you push it to GitHub.
Use short, descriptive commit messages that explain what the commit accomplishes. For example, Add input validation is more useful than Update. See How to Write a Git Commit Message for additional guidance.
For a group assignment, pull your teammates’ changes before you begin and again before you push:
git pullIf Git reports a conflict, resolve it carefully before continuing. Do not force-push unless your instructor explicitly tells you to do so.
5. Submit the assignment
The recommended submission method is the Classroom 50 student command. From inside the cloned assignment repository, run:
gh student submitThis snapshots the files that should be submitted, pushes the submission to the repository’s default branch, and starts grading when autograding is enabled. It also prints links to the relevant GitHub pages.
Submission behavior can vary by assignment:
- Every-push assignments: a normal
git pushtriggers grading. Usinggh student submitis still recommended for the final submission. - Submit-only assignments: a normal push saves your work but does not trigger grading. You must run
gh student submitor follow the tag instructions supplied by your instructor. - Milestone-tag assignments: your instructor may require a specific tag such as
phase1orcomplete. Use exactly the tag name given in the assignment instructions.
Do not create, close, or merge a pull request to submit unless your instructor explicitly asks you to. If Classroom 50 created a Feedback pull request, leave it open; Classroom 50 uses it to display changes, automated results, and instructor feedback.
6. Verify the submission and review feedback
Return to Classroom 50 and open the assignment’s My submission page (or Group submission for a group assignment). Confirm that your latest submission appears.
If the assignment has a Feedback pull request, leave it open. Your instructor may use it to review your work and provide comments.
When autograding is enabled, you can also:
- open the repository’s Actions tab to follow the grading workflow; and
- open Releases to view automated scores and per-test results.
Automated results may cover only part of the assignment. Your instructor may assess additional requirements and provide feedback separately.
Troubleshooting
- The organization or assignment does not appear: verify that you are using the correct GitHub account and have accepted the course organization invitation.
- The assignment link says “Not a member yet”: ask your instructor to add you to the roster, accept the resulting invitation, and try again.
ghis not recognized: install the GitHub CLI, then install the student extension withgh extension install foundation50/gh-student.- Authentication fails: run
gh student login, follow the browser or device-code prompts, and then retry. - A push is rejected because the remote has new changes: run
git pull, resolve any conflicts, and push again. - A normal push was not graded: the assignment may be submit-only. Run
gh student submitor follow the instructor’s required tag instructions.
For more help, consult the official Classroom 50 troubleshooting guide or contact your instructor or teaching assistant.
Tips
- Run
git statusoften; it shows which files changed and whether commits still need to be pushed. - If you use Visual Studio Code, its built-in source control tools can help you review, commit, pull, and push changes. You can still use
gh student submitin VS Code’s integrated terminal.
Quick reference
| Task | Command |
|---|---|
| Check the repository | git status |
| Download remote changes | git pull |
| Stage changes | git add . |
| Commit changes | git commit -m "Describe the change" |
| Push commits | git push |
| Submit with Classroom 50 | gh student submit |