oneGrade - Auto Marking Solution | Nathaniel Read

When 03/2020 Type Software
oneGrade is an application for programming teaching staff designed to centralise and simplify the marking of programming assignments. By turning submissions into a pipeline, staff are saved time having to do the laborious work running scripts, and have more time to give formative feedback. We built this project of JISC's DigiFest Hackathon 2020.

This project was built around our own experiences of marking at University, with lecturers having to manually mark potentially hundreds of pieces of code for their students. This takes a significant amount of staff time, and leaving less time to spend with students, research, or make new teaching resources.

Image of Project

This year’s hackathon looked at education 2030, and the changes to the sector planned by then. We chose our project to build a proof-of-concept that could be developed further to allow an immediate improvement in marking times, with a potential to give feedback to students on their assessments as they progress through their modules.

How it works

The application allows tutors to create assessments through the creation web interface and select the platform and build directory for a skeleton solution that they’ll provide to students, meaning the test suite will easily be able to find the executable to run.

The tutor can then provide the test script (we built the proof of concept with a Postman script) or provide a second solution or file to test against the first.

Once submitted on the front-end to the API, the container is built in Docker, run and when the marking is complete, the results will be shown in the API and on the front-end for the assessor and for the student.

Image of Project

As potential future expansions, we looked at building in a marking script generator, at the moment we allow you to run a Postman collection against student submissions, but this could be expanded out to running full test projects on their own. We also looked at implementing Kubernetes for remote container operation and checking for plagarism against other students using the Azure blockchain service.

We would also make it an extension for Learning Management Systems (i.e. Canvas or Blackboard) so that submission and marking can be embedded in the existing learning experience.

Image of Project

Tools Used
  • The client application created was a React web app that submitted to the API
  • The server/API side is a .NET Core Web API which initialises Docker containers, runs them and displays their pending status or results through the API.