How Kriterion Works
From assignment creation to final grades - here's every step, plus the architecture powering it.
The Workflow
Professor Creates Assignment
Define rubrics, upload test cases, set deadlines, and choose allowed languages. Starter code and attachments are stored on S3.
Student Writes Code
An in-browser VS Code-like editor with syntax highlighting, file explorer, and multi-file support. Or just upload files directly.
Submission & Compilation
Code is sent to a Celery worker, compiled inside a sandboxed Docker container. Instant feedback: compiled successfully or full error output.
Test Case Execution
Each test case runs against the student's code with time limits. Outputs are compared line-by-line. Partial credit is calculated automatically.
Plagiarism Detection
JPlag's Greedy String Tiling algorithm runs across all submissions. Matching code regions are identified with line numbers and similarity scores.
Review & Final Grade
Faculty review auto-grades, run student code interactively, override scores, and publish final grades - all from one unified grading interface.
How Everything Connects
A multi-tier architecture with async task processing, sandboxed execution, and cloud storage.
Submit → Queue
Student submits code via the API. FastAPI dispatches a Celery task with submission metadata.
Queue → Sandbox
Celery worker pulls code from S3, writes it to a temp directory, and runs it inside a Docker container.
Sandbox → Grade
Test results are captured, scores calculated, plagiarism checked, and the submission record is updated in PostgreSQL.
Tools & Technologies
Every layer of Kriterion is built with production-grade open-source tools.
Frontend
Backend
Infrastructure
See it for yourself.
Create an account and set up your first assignment in under five minutes.
Get Started