8

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.

5
  • 3
    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)
    – 410 gone
    May 4, 2014 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. May 4, 2014 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.
    – 410 gone
    May 4, 2014 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? May 4, 2014 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, 2014 at 9:06

4 Answers 4

4

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.

5
  • That is a very neat idea (as long as you check they are not touching the tests).
    – Davidmh
    May 16, 2014 at 18:01
  • @Davidmh that's the beauty of version control! Just check with a quick “git diff".
    – Leo Uieda
    May 16, 2014 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, 2014 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? Sep 16, 2016 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, 2016 at 17:29
4

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

1

Github classroom provides a free place to make and submit assignments and you can set up autograding. One thing is that in github with github actions you can also build tests right into the push process. However, I have seen some people on the forums for teachers say that they run out of free processing time during busy parts of the semester.

1
  • +1 for GitHub classroom. I've used it extensively for database, Java, and C++ classes. My class sizes are relatively small, so I haven't run into the processing time issue much and, when I did, I decided the extra expense was worth it (again, for my class size it was maybe $10).
    – Peter K.
    Aug 25 at 21:33
1

I can strongly recommend PASS (Programming Assignment Submission System), which was written by Mrs Marsupial to support my teaching on first and second year programming modules (Java and C++). It formats the code into a .pdf document using LaTeX, but it also compiles and executes the program and adds the compiler messages and output to the .pdf file (and any output files that the program is supposed to produce). The .pdf file includes an embedded .zip file containing the code in a standardised format in case further inspection/testing is required. The requirements for each assessment are provided in an XML file for each module that specified expected files, input datafiles etc. We have done some experimentation with automated testing, the simplest approach would be to include a Makefile and test harness in the metadata and PASS can add the output of the test harness. However, for the modules I teach I am mostly interested in the structural side of the program design and whether the program is maintainable, so I tend just to have output specifications that show the program basically works and then mark by annotating the .pdf file on my ipad.

We have been using PASS for quite a while at my institution and it has saved a lot of unnecessary admin and hassle. The major benefit is that there is a well-defined target environment (eliminating the "well it works on my computer" complaint) and the students get to see exactly the output of the program as I see it when it is marked. Unfortunately students have to formally submit the .pdf file via BlackBoard at my institution, but another useful feature of PASS is that it provides a reliable independent time-stamp that can be used to determine whether an academic advantage has been gained by a late/failed BlackBoard submission.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .