InfoMark has supported thousands of students and several teaching assistants during university courses in Tübingen in the last few years. It evaluated weekly programming homeworks automatically. Students can upload their homework solution and receive immediate feedback from the system, as the solution is automatically checked by unit tests after uploading. The TAs see more test outputs and can write feedback.

Features and Design goals:

  • language-agnostic: One system to test and grade programming assignments in any programming language you can imagine.
  • easy-to-use, easy-to-install: All magic is packed into a single binary: Frontend, Backend, Workers and Console.
  • modern: A RESTful JSON backend and a Single-Page-Application that is mobile-friendly.
  • minimal dependencies: Just requires docker and docker-compose.
  • reliable system: We insists on high code quality and unit tests following best practise using CI.
  • highly scalable: background workers can be deployed on different machines and the unit-test workload will be distributed amongst them.

The system uses the following frameworks and technologies:



Backend (Go)

Build Status source source

Containing the RESTful JSON webserver and bundles the front-end

Frontend (Elm)

Build Status source

Containing a Single-Page-Application

Highlights

A single binary contains the entire system (server, worker, assets) making deployment of InfoMark a breeze
The front-end is driven by minimal JavaScript assets (70.23 KB) for a fast SPA experience.
Direct feedback for students from our system after testing their homework automatically in a docker sandbox
Easy interaction: Just drag and drop homework solutions to upload them to the server
All student infomation in one place
Grafana: live metrics to monitor submission failures and traffic