The tests grade the work, not the teacher
A student writes a program, the teacher looks at it and says it seems right. A week later it turns out that it crashes on zero and returns nonsense on a negative number. Reading code by eye catches typos, not edge cases — there is neither the time nor the attention for those with eighteen people in the group.
ItCube runs the solution against several sets of data. A task carries cases: an input, an expected answer, points. Some are hidden — the student sees only whether the case passed, never its input or its answer. Otherwise a solution gets fitted to the known answer instead of being made to work. The first version of this service ran in 2023 on procedural PHP; only the domain survived.
What is inside
Fourteen languages, no sandbox of its own
Python, JavaScript, TypeScript, PHP, C, C++, Java, C#, Go, Rust, Ruby, Pascal, SQL, Bash. Code goes to Wandbox: running untrusted code is infrastructure a school platform cannot afford to maintain, and Wandbox already maintains it.
One backend instead of three, because of stdin
The Go Playground does not accept input, and without input there is no such thing as a test case with data — and so no assessment worth the name. Wandbox covers everything itself, Rust, Pascal and SQL included.
Grading on a queue, not in the request
Not architecture for its own sake but a consequence of measuring: one Go build takes about twenty seconds, five cases take a minute. Cases go out in parallel and the page polls for the result.
Timed quizzes and assessments
When the time runs out the answers submit themselves. An assessment gathers quizzes and coding tasks into one paper with an open window, and the sheet scales each piece of work to the weight the teacher gave it.
A register that tells groups apart
A mark belongs to a group and, where known, to a lesson. In the 2023 schema attendance was a pair of student and date, so a student enrolled in two tracks was indistinguishable on the same day.
Three languages, the source string is the key
Russian, English and German in the gettext style: anything untranslated stays readable text rather than a key name in the middle of the page. A command compares the dictionaries against the code and a test keeps them from drifting.
A dashboard that answers questions
The table that matters lists tasks by the share of students who solved them, lowest first: it points at the topic worth explaining again, which no activity counter ever does. Beside it, attendance by week and by group, submissions per day, and the quiz questions people get wrong most.
A parent's view without the code
An adult sees their children's attendance, results, timetable and assessments. They do not see the code, on purpose: a parent asks whether the child turns up and keeps up, and going through a solution is the teacher's job.
Screenshots