7

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.

  • 2
    This question appears to be off-topic because we don't do shopping questions here. This could be on-topic for Software Recommendations, if it was brought up to the standard required there (see their meta for details) – EnergyNumbers May 4 '14 at 11:27
  • 1
    @EnergyNumbers: Perhaps the way it is phrased, it sounds like a shopping question, but the general idea of the question is relevant, I feel. Many academics need to deal with electronically submitted assignments. Some of these are software and software needs to be/can be run automatically. – Dave Clarke May 4 '14 at 11:35
  • @DaveClarke the general idea may be relevant, but we don't do list questions here. There is a Stack explicitly for this site of question - and that's Software Recommendations. And this sort of question is explicitly off-topic here: not because of its general idea, but because of its nature as a list (aka shopping) question. Software recommendations are really difficult to ask for, which is why Software Recs has detailed instructions on its meta. – EnergyNumbers May 4 '14 at 11:50
  • 1
    Since I'm interested in this topic as well, let me turn this into a more constructive direction: What would be needed to make this question on-topic? How about asking for practical experiences with automated assessment tools (specific tools or in general), or about specific features which turned out to be useful (or not so useful) in classes? – Christian Clason May 4 '14 at 12:49
  • 1
    @EnergyNumbers There are several similar questions that have been accepted. I agree, though, that Software Recommendations would be appropriate, too. – Raphael May 6 '14 at 9:06
3

I've never done this myself, but I think the following system could work using GitHub and Travis CI:

  • 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.

  • That is a very neat idea (as long as you check they are not touching the tests). – Davidmh May 16 '14 at 18:01
  • @Davidmh that's the beauty of version control! Just check with a quick “git diff". – Leo Uieda May 16 '14 at 18:04
  • or in the Github's files tab. Just thought it was worth mentioning they may try to trick you! – Davidmh May 16 '14 at 18:08
  • Can't one rewrite history in the forked clone so that the modifications to the tests don't show up with "git diff" nor in Github's files tab? – Federico Poloni Sep 16 '16 at 16:31
  • 1
    They could but that would cause a merge conflict that would show up on the pull request. Rewriting history changes the commit hashes and they would need a forced push for that. – Leo Uieda Sep 17 '16 at 17:29
3

The open-source web program CMS (Contest Management System) was created by people at my university (CS institute, university of Pisa). Screenshots here.

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).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.