InfoMark supported thousand of students and several TAs in recent years at university courses in Tübingen, which involved evaluating weekly programming tasks. Students can upload their homework solution and get instant feedback from the system as unit tests automatically verify the solution after uploading. TAs will see more test outputs and can write feedback.

With the following design goals in mind:

  • language-agnostic: one system to test and grade programming assignments in any programming language
  • fast: minimal javascript assets required
  • cross-platform: RESTful JSON backend runs on OSX, Linux and Windows
  • easy to install: a single binary contains the entire RESTful backend
  • minimal dependencies: just RabbitMQ, Redis and PostgreSQL bundled in docker-compose
  • 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:

Frontend (Elm)

Build Status source download

Containing a Single-Page-Application

visit on GitHub
Backend (Go)

Build Status source download

Containing the RESTful JSON webserver

visit on GitHub
A single binary contains the entire system (server, worker) to easily deploy InfoMark
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 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