AlgoJudge documentation0.1
For a manager

Activities

A contest, a course or a practice set, and the four tabs it is built in.

An activity is one place where problems are given to people: a contest, a course, a practice set. Everything else on this panel either feeds one or reads one.

It holds its problems in series — rounds — and a series holds assignments rather than problems. An assignment is the row attaching makes, and everything about how this problem is used here lives on it; the problem itself stays in the library, where several activities can point at it at once.

Creating one

New activity asks for three things and nothing more:

  • a name;
  • a slug, used in addresses — AMMPZ-2019;
  • a type, chosen from a list rather than typed.

The rest is edited on the activity itself, with defaults to start from. Asking for the whole settings form before the activity exists would be a worse first step.

The slug is immutable once set

Participants' links point at it. The create form says so, and the field on the settings tab is locked from then on. Choose it as you would a URL, because that is what it is.

Type is a choice because the type decides how the activity presents its series — a string nothing is registered for gets whatever the fallback happens to do. Ranking type (points or icpc) is a separate setting and independent of it: it chooses which ranking is drawn.

A new activity is published the moment it exists. Making one is the deliberate act, and being asked to say so a second time would be ceremony rather than a safeguard. So the list gives it the state its dates imply — Upcoming, Ongoing, Finished, or Untimed while it has no dates — its series open on schedule, and anybody you enrol reaches it at once.

That is not the same as being open to the world. A new activity is created closed and hidden from the list, so nobody enrols themselves into it and nobody browsing finds it; both switches are under Visibility and enrolment on the settings tab.

Withdraw takes all of that back: no round of it opens, the address answers anybody who cannot edit it as though the activity were not there, and the list shows Being prepared in place of a state until you Publish it again. The one activity that does arrive unpublished is a copy, which nobody sat down and wrote.

Time is stored in UTC and shown in the activity's zone

The activity carries a time zone, and every instant it owns is displayed and entered in that zone, with the zone named on the field. What is stored is UTC.

That matters when you are not in the room: a manager sitting in another zone can set a contest that opens at 18:00 in the contest's clock without doing arithmetic, and the times a participant sees do not depend on where either of you is sitting.

The four tabs

The open tab is in the address, so a reload, a bookmark and a link you send all land where you were.

Series and problems

Rounds, and what is attached to them. They are edited together because a series with no problems is not yet a round. See Series and The problem library.

Settings

Everything the activity is configured with:

GroupWhat is in it
Identityname, slug (locked), type, ranking type, time zone
who sees what a submission carries — one row per file a Runner attaches, each either managers only or participant
Datesstart and end. Leave both empty and the activity spans its series: the earliest start and the latest end
Modulesquestions and announcements. A disabled module leaves the participant's sidebar entirely
whether the problems of a finished series stay readable — off, a finished round is over rather than secret
Visibility and enrolmentwho sees scores and the ranking, who may join, whether it is hidden from the list, whether a group's ranking row names its members, the join password and the link to hand out
Which Runners judge this activitythe tags that decide which machines take its work — see Runners
Limits the Server enforcesmaximum upload, files per submission, submissions per problem

That last card is named after what it does: the three are columns on the activity, checked on every upload. Time and memory are not among them. They only become knowable while a solution runs, so they belong to the problem and are set in its package.

Documents

Three documents an activity may publish, each in as many languages as you write:

KindWho reads it
welcomesomebody who is not enrolled, looking at the activity from outside
homesomebody who is in it
rulesthe rules page

They are the same editor the installation publishes its own documents in, and they behave the same way: publish, unpublish, and a history per kind. A language with no text of its own falls back to the default one. Whether an activity has rules is whether one is published — there is no separate switch.

Clicking into an activity as a participant lands on the home document when one is published, and on the problems otherwise.

Participants

Who is in it, and what they may do — one act, not two. See Enrolment and Groups.

Archiving, and deleting

Archive is the ordinary act. An archived activity stays readable and accepts nothing new — no submissions, no questions, no edits — and keeps its ranking and its history, which is what people come back for. Restore it to keep editing.

Deletion destroys everything in it and is refused outright for an activity that has participants; the button says so instead of failing on the click. It also needs activity:delete, which is deliberately not in the shipped manager template.

On this page