Skip to content

Modules & assignments

How assignments live in modules, how students submit, and how you work through submissions

An assignment is one graded piece of work. It lives in a module, and it points at the thing students submit through:

  • Repository (REPO): students work in a Github repo Classmoji created for them
  • Quiz (QUIZ): students take a quiz in Classmoji
  • Form (FORM): students fill in a form

The assignment carries everything grading needs: its weight (how much it counts toward the course grade), an extra credit flag, a release date, a student deadline, a grader deadline, and tokens per hour for deadline extensions. A repository is just storage; several assignments can submit through the same one.

app.classmoji.io/admin/cs-101/modules
The Modules list showing a published module with items and a draft module

Open a module and click Add item on the module card. Under Submissions, pick a repository, a quiz, or a form. A quiz opens the quiz form with this module chosen, and its assignment fields (due date, weight, tokens per hour, published) are set there; a repository or form assignment opens the assignment form below. Pages and slide decks are added from the same menu as content.

The assignment form asks for:

  • Title: for a repository assignment this also names the repository, so each student’s copy is <title-slug>-<github-login> (for example react-intro-jdoe).
  • Repository (repository assignments): New repository from a template searches Github for starter code and creates the repository on the spot, or Existing repository picks one the class already uses. Team repositories are created on the Repositories page.
  • Quiz or Form (quiz and form assignments): the one students complete.
  • Weight: how much the assignment counts relative to the others (see Weights and the course grade). Mark it Extra credit to add on top instead.
  • Release date: when the assignment is released into student repositories (in issue mode, that’s when the issue is opened) and unlocks for students. Always set one: an assignment with no release date is never released on its own, even after the module and repository are published. Future-dated assignments are released by a daily job (04:01 UTC), so set the date to the day before if you want something available first thing in the morning.
  • Student deadline: the due date. Late penalties and token extensions count from here.
  • Grader deadline: when graders should finish. Internal only, students never see it.
  • Tokens per hour: what an hour of extension costs a student. Leave it empty to use the classroom’s price from Settings > Extension; 0 turns extensions off for this assignment. See Configure tokens.
  • Linked pages and slides: content shown next to the assignment.
  • Submission mode (repository assignments only, see below). It locks once any student has submitted.

On the module card, an assignment row shows its title, a caption like lab-1 · push · 10% (or · issue), a Published or Draft tag, and Edit. Clicking the row opens its submissions; for a quiz that’s the quiz results, for a form the responses. The row’s ⋮ menu has Edit repository / Edit quiz / Edit form (the thing itself, not the assignment) and Delete assignment.

A repository assignment has one of two submission modes.

Push mode is the default for new assignments. A push to the student’s repo is the submission. Nothing is created on Github.

  • The last push before the deadline (plus any extension hours bought with tokens) counts as the submission. The deadline freezes it: later pushes never replace an on-time submission.
  • A student who only pushes after the deadline still gets a submission, marked late; the late penalty applies unless you waive it. Lateness counts in whole hours.
  • Once the submission is graded, its submission time is frozen.
  • If you add an assignment to a repository students have already pushed to, their latest push counts (template and bot commits are excluded).

Issue mode is the older flow. When the assignment is released, Classmoji opens a Github issue in each student repo. Closing the issue submits; reopening it un-submits. Make sure students know that closing the issue is the submit button.

For both modes, students push their code to their repo the usual way. Push mode simply removes the extra step.

Clicking an assignment row opens its page at /admin/:class/assignments/:id (teachers and assistants get the same page under /teacher and /assistant).

app.classmoji.io/admin/cs-101/assignments/lab-1
An assignment page with per-student submission rows, grades, graders, and the release toggle

At the top: a Modules / module / assignment breadcrumb, the facts (Repo · push or issue, a link to the repository, due date, weight, autograding on or off, student repos n of N), and the controls: a Grades released switch, Assign graders (owner), Edit assignment, and a ⋮ menu with Autograde, Edit repository, and Update student repositories.

Tiles count Submitted, Late, Graded, and Ungraded. Search by student, and filter All / Ungraded / Late / Not submitted.

Each roster row is one submission, a student (or team) and their repo:

  • Student
  • Repository: link to the Github repo
  • Last push
  • Autograding: a passed/total pill when autograding is set up
  • Submission: Submitted with the time, Late Nh, Not submitted, or Missing
  • Graders: the assigned graders; Assign or Change opens a checklist of grader-flagged staff
  • Grade: the grades given.
  • Actions: hovering Grade opens the picker (emoji, or score badges on a numeric scale); View opens the student’s repo (or issue, in issue mode). Late rows get a ⋮ with Waive late penalty / Restore late penalty.

Grading itself is covered in Grade assignments.

Weights are relative: an assignment’s share of the course grade is its weight divided by the total weight of the graded assignments, so they don’t need to add up to 100. The course grade is the weighted mean of the graded, non-extra-credit assignments (repository and quiz alike), plus extra credit: each graded extra-credit assignment adds its grade × weight / 100 points on top. There is no per-repository weight and no drop-lowest; the assignment is the only place a weight lives. Forms carry no grade.