GINI Teaching Center

Staff sign-in.
GINI

Courses

Everything hangs off a course. Pick one to work in.

New course

Activities

New lab

The hard stop. After this no student can start.
From when they enter the code, not from now.
After the deadline, still accepted and tagged LATE. 0 = a hard stop. Without it a student who finished at 23:58 and lost their wifi holds a proof the server refuses for ever, recoverable only by a teacher accepting it by hand.
Short answers, in the student's own words. Write a few; each student is asked a random selection of them, fixed when their code is issued. The answers you give are the marker's key — they are never sent to a student's machine, and nothing here is marked automatically.
Ask of them
0 asks nobody anything. Leaving a question unanswered never blocks a student — a blank is recorded as a blank and the marker sees it.

Submissions

Work arrives on its own as students finish, with no name on it. Enter the receipt a student gave you, plus their student ID, to open the work and record it as theirs. Leave the ID blank just to look.

Take one in by hand

For work that never made it up — a code that lapsed before the upload landed, a laptop that was offline at the deadline. Pick the proof file the student still has. It is checked exactly as an upload is, and nothing that fails a check is taken. Only the deadline is waived, the work is tagged LATE, and the report says you waived it.

Library

Books and specs indexed once for the whole server, and linked into a course by whoever teaches it. Linking is what lets GINI answer out of a work — so it is also how you keep a class in ONE vocabulary: a course that says "thread" where a book says "process" does not want the two mixed in front of students, however relevant the book is. Nothing here reaches a course until it is linked.
A work is put on the shelf from the server, not from here — indexing walks the source a page at a time and takes a minute: gini-tc index-reference --preset xv6

Content

Add material

Staff

Teachers you add get a one-time claim token. They choose their own password. Forgotten one? Reset password puts that account back to a fresh token — role and courses kept, every session ended.

Add a teacher

There is no “forgot my password” link, and no way to reset your own account — this server has no address to send mail from, so a self-service link would be a way in for whoever reads the mailbox rather than a recovery. If you are the only admin and you are locked out, set ADMIN_PASSWORD and restart the server: it is authoritative on every boot.

Reset the site

For clearing up after a testing phase. Labs, codes and submissions are always removed. A backup is written to disk first.