Can anyone recommend an open source system for students to submit programming assignments? Ideally it would be something that would run on the web, do some level of testing on the server side, and provide feedback to the students based on testing.
It has been used also in the international informatics Olympiad and several other international programming contests, so it is mature and well tested.
It is in use since a few years in the undergraduate course on Algorithms in our CS degree. It allows students to submit their source code online, where it is executed in a sandboxed environment and scored automatically on the basis of some test cases. It supports out of the box C, C++, Java, Python, Pascal, PHP, and other languages can be added (although I don't know how easy it is).
- Create a repository for the homework where students can submit pull requests to.
- Make scripts to run and test the solution and put them on the repo.
- Students would then fork the repo, add their submission, and make a pull request.
- Setup Travis CI to run the test scripts on the solutions. This will require some form of standardization for the commands to compile and run the solutions.
The nice thing about this system is that the pull request page on GitHub reports the status of the Travis CI run. You can then leave comments for the students and they can iterate until Travis gives them the green light.