Classroom 50 for GitHub: Getting Started

Classroom 50 is a free, open-source tool for distributing, managing, and grading programming assignments using GitHub. It is the recommended replacement for GitHub Classroom.

Classroom 50 supports individual and group assignments, starter-code repositories, autograding, feedback, roster management, and score collection.

Getting Started with GitHub

Before setting up Classroom 50, review our Getting Started with GitHub documentation.

You will need:

  • A GitHub account.
  • A GitHub organization on the Team or Enterprise plan.
  • Owner access to the GitHub organization you plan to use with Classroom 50.

Verified educators may qualify for GitHub Education benefits that provide the required organization features at no cost.

Set Up Your GitHub Organization

Classroom 50 stores classroom configuration, rosters, assignments, and related information within your GitHub organization.

If you have co-instructors or TAs who need administrative access, use a course-specific GitHub organization so the appropriate staff can be granted access.

For Johns Hopkins courses, it is preferred that the organization be part of the JHU GitHub Enterprise so that it receives applicable enterprise benefits.

If you need a new GitHub organization or need to transfer an existing organization into the JHU GitHub Enterprise, use the JHU GitHub organization request process.

Set Up Classroom 50

  1. Go to classroom50.org.
  2. Select Sign in with GitHub.
  3. Authorize Classroom50 to access the GitHub organization you will use for your course.
  4. Locate your organization under Set up new organization and select Set up.
  5. Select Run setup.

Classroom50 creates a classroom50 repository within your organization to store its configuration and classroom data.

Add the Classroom 50 Service Token

During organization setup, Classroom 50 will also prompt you to create a service token.

  1. Follow the link provided by Classroom 50 to create the GitHub token with the required permissions.
  2. Copy the token.
  3. Return to Classroom 50 and paste the token into the setup form.
  4. Complete the organization setup.

The service token is used by Classroom50 workflows for functions such as collecting assignment scores.

Create a Classroom

After your organization has been configured:

  1. Open the organization in Classroom50.
  2. Select Create classroom.
  3. Enter a Name for the classroom.
  4. Enter a unique Slug.
  5. Optionally enter a Term to identify the course offering.
  6. Create the classroom.

A Classroom represents a particular course offering or section. A single GitHub organization can contain multiple classrooms.

Add Course Staff

If co-instructors or TAs will help manage the course:

  1. Open the classroom.
  2. Select Settings.
  3. Locate Staff and roles.
  4. Add the appropriate instructors or teaching assistants and assign their roles.

Add Students

Students must be added to the Classroom 50 roster before they can accept assignments.

Open the classroom and navigate to the Roster page.

You can add students individually using their GitHub username or email address, or upload a roster in bulk.

Upload a Roster

Classroom50 supports CSV files as well as plain lists of GitHub usernames or email addresses.

For a CSV roster, each student needs at least one of the following identifiers:

  • github_id
  • username
  • email

Optional fields include:

  • first_name
  • last_name
  • name
  • section
  • role

Important Note: Students added using a GitHub account must accept the invitation to join your GitHub organization before they can begin working on assignments.

Create an Assignment

From the classroom:

  1. Select + Assignment.
  2. Enter the assignment name and optional description.
  3. Optionally configure a due date.
  4. Choose an assignment type:
    • Individual — one repository per student.
    • Group project — students share repositories with their group.
  5. Choose whether the assignment starts from an existing GitHub template repository.
  6. Configure grading and autograding as needed.
  7. Select Create assignment.

Classroom50 can create assignments with or without starter code and can run autograding through GitHub Actions.

Important Note: Costs will incur with GitHub Actions

Share the Assignment with Students

After creating an assignment, provide students with the Classroom 50 assignment acceptance link.

Students use the link to accept the assignment and create their assignment repository.

Collect and Export Scores

For assignments using grading or autograding, Classroom 50 can collect submission results from student repositories.

From the assignment submissions page, instructors can review submissions and download scores as a CSV for use in Canvas or another gradebook.

Migrating from GitHub Classroom

If you previously used GitHub Classroom, Classroom 50 includes a migration tool.

From your configured organization in Classroom 50, select Import from GitHub Classroom and choose the classroom you want to migrate.

The migration can recreate:

  • The classroom.
  • Individual and group assignments.
  • Starter repositories, copied into the target organization as template repositories.

The following are not migrated automatically:

  • Student rosters.
  • Existing scores.
  • Previous student repositories.
  • GitHub Classroom autograding configurations.

Related Resources

If you experience any difficulties in getting your site setup and connected, please contact CMTShelp@jh.edu.

Was this article helpful?
0 out of 0 found this helpful