Assignment submission design issues

One of my long term goals with OLM is to support automated testing where students could submit code and get immediate automated feedback. They might do this multiple times before submitting a final version. This means that we need to be able to keep multiple versions of a student’s submission. So, rather than inventing an ad hoc way to do this, our plan is to store student submissions in an SVN repository.

We don’t want to write a full subversion interface in OLM, partly because it just seems wrong, and partly because I’m not sure that there is good motivation to ask our first year students to use a version control system for their assignments.

Let’s first look at the issues from the point of view of a first year student who doesn’t know about how the files are stored in OLM. When a student uploads a file with the same name as one that was previously updated, the new file becomes the new version. From an SVN point of view no attempt is made to merge the files. I don’t think there is a problem with this scenario, but students who understand how SVN works may not expect this behaviour.

However, if students are already using repositories for their assignment work (as they do in our second year programming courses), it would be really nice if OLM could just use those repositories. When we use repositories in our courses, students submit assignments by committing files to their repo before the due time.

Design question 1: Should students who are already using repositories have a web interface to “submit” their assignment?

If they do have a web interface, it complicates OLM’s job, because OLM then has to worry about conflicts. There may also be confusion for the students about which mechanism to use, and the differing behaviour between the two mechanisms. Students may need to worry about dealing with conflicts and merging changes when they are actively using a repository.

Design question 2: Do students need to be able to submit directories through the web interface? Should a student’s submission be able to include subdirectories?

The issue here is whether the web interface for assignment submission needs to support the ability to create and delete directories, or whether we can just support browsing them. Here again there is a distinction between the cases where the students are actively using the repositories and where they have only the web interface for assignment submission. If students have direct access to the repository, then it makes sense to do all directory adds and removes through SVN. If they don’t have access to the repository, then do they really need subdirectories? (We didn’t support subdirectories in the original OLM.)