Hacker News new | ask | show | jobs
by CSDude 4439 days ago
http://imgur.com/QUGUkxa PAGS: Programming Assignment Grading System. I'm a Msc student and a teaching assitant. Grading programming assignments of students takes so much time because of preparing files, environments, viewing code, multipe outputs etc. Besides my research, I developed this Docker based web application, where assignments are Dockerfile + run script + required/supplied/output files.

Main motivation: I can grade ~80 student projects in at most 1 hour, even looking at code besides their output. It took almost 2 days before, and repetitive tasks made me lose my mind. It keeps me sane, and saves me tremendous time. http://pags.cs.bilkent.edu.tr

5 comments

It's a really good idea to have something like this to create a canonical build environment. We've had quite a few issues on my course of "it works on my machine". The only thing I'm wondering about is GUI programs. Currently it looks like those wouldn't be possible, which is unfortunate, because several of the main programming assignments I've had have been Java GUI applications, C++ and OpenGL programs, etc. I wonder how these could be done?
I have already evaluted this; You can expose VNC through a port, and use NoVNC to play it on browser over websockets. The problem is, it is too slow and would generate a big burden on server.

noVNC: https://github.com/kanaka/noVNC

This looks pretty polished. The custom pricing plans is cool, maybe you want to set up presets or suggested plans?
Yeah, that would be nice, i.e. Java assignments may need larger RAM
Really like the idea, my uni is currently investigating use of domjudge to mark assignments, but couple that with face to face feedback while reviewing the code.
This is brilliant. We recently showcased another course doing something very similar.

Looks like an area someone could create a company :)

Guessing the use of docker is to mitigate possible harmful student code executing in the server?
Yes, and they can open same ports, same message queues, semaphores concurrently without problem, and makes it easy to define custom build environments. As a bonus, students can replicate my exact environment, so they cannot say "But it works on my machine"