Skip to content

Courses

A course is a collection of problems and optional content pages, organised by topic, week, or class. Students access a course at /c/<course-id>; its overview is the special index page.

Creating courses

Admins create courses by asking the assistant ("create a course called Graphs") — there is no form UI for it yet (roadmap). Once a course exists, its maintainers can fill it: problems and pages via the assistant or by hand.

Access model

Three roles control who can do what:

Role Who What they can do
Admin Server-wide flag on the user account Everything, every course
Maintainer Added per course by an admin Edit that course's problems, files, and pages; review its student submissions; use the assistant
Student Member of a group assigned to the course View the course, submit solutions

A signed-in user with none of these roles sees a holding page until an admin adds them to something.

Groups and assignments

Students access courses through groups — a group is your class:

  1. An admin creates a group and adds members (bulk-paste emails at /admin/groups)
  2. The admin assigns the group to a course, optionally with a due date
  3. Every member of that group can now access the course

Unknown email addresses get an account immediately, so you can enroll a whole class before anyone has logged in — they're matched on first GitHub login. Assignments and invitations send email notifications (if SMTP is configured).

Maintainers

Maintainers can edit a course's content and view its student submissions, but cannot manage groups or other courses. Add them at /admin/courses by email — same invite-before-login behavior as groups.

Audit log

Every edit — file saves, renames, deletions, settings changes, everything the assistant does — is logged with who, what, and when. Review it at /admin/audit.