views:

158

answers:

5

This semester I'm teaching a class at a local university. Thus far, I've had the students turn in their programming assignments by emailing them to me. But there is a lot of hassle when pulling 20 solutions out of emails.

Has anyone ever used a source control tool to have students turn projects in? What did you use and how was it set up?

+1  A: 

I think a common way is to create directories for ftp uploads. Some cron job can check for submissions and automatically run make and then run tests.

Using source control sounds like a lot of work but it can be done.

When I listened to a Berkeley CS unergraduate podcast for a course they were using something call an "autograder" = most likely an in-house thing that allows submissions and then runs builds and tests.

how about here:

http://www.users.muohio.edu/helmicmt/autograder/index.php

http://prisms.cs.umass.edu/mcorner/autograder

Tim
+5  A: 

At my university, the school of Computer and Information Science runs a student CVS server. Each subject (that chooses to use it) gets a repository, with each student enrolled in the subject getting a folder in there. The admin accounts obviously get access to the whole lot, while each student can only checkout their own folder.

For example, take the Operating Systems subject (I have taught in the past):

/cis_os_2009
     |-studentID1
           |-assignment1
           |-assignment2
           |-prac1
     |-studentID2
     |-etc

In the assignment specifications we give instructions for submitting assignments.

I like the CVS submission system better than emails and the web submission system that other areas of the uni use. It teaches students how to use a version control system. You can almost entirely scrub the 'my usb flash drive was lost/broken/stolen' excuse for students who do not hand in assignments, since students should be doing regular commits to the repository (in some subjects, marks are allocated to correct use of CVS).

The downside is that you cannot assume that students will know how to use CVS/SVN at the beginning of the semester. Most subjects here dedicate the first week's practical to a CVS tutorial so people can make sure that a) the sysadmins have setup their accounts correctly, and b) that they can add and commit files correctly. It also means you have to be a little lenient for submissions of the first assignment.

All you need to do for marking is checkout the repository as it existed at the due date/time of the assignment. If you run scripts for partially automating marking the repository makes it very easy. You know exactly what the folder structure should be and where all the files should be located. In the subjects I have taught, we have a marks file with a rundown of the student marks and comments on why marks were deducted. We check this file into the repository and students can get their marks immediately by doing a cvs update.

MichaelM
+1  A: 

Since google code supports Mercurial now, this should be somewhat doable using google code, or using http://bitbucket.org to host the code in an open source way. I think that would be a great tool for anyone to learn, a distributed version control tool is so essential to ease of development.

I would recommend git, but it's just a little bit top-heavy in the learning curve department.

Tchalvak
A: 

I'm going to try using Google Docs in my AP Computer Science class this year. It looks like it will work really well.

I'll have each student sign up for a Google account and have them copy & paste their source code into a new Google doc, making sure they use a monospaced font. Then they'll just share the document with the Google account I've set up for myself.

Google Docs will let me write comments directly in their documents, which they'll be able to see the next time they log in. I'll create a different folder for each assignment to keep things organized.

Not sure if this is the BEST solution, but it's free, and WAY better than having the student print everything out like I was doing last year.

bestattendance
+1  A: 

Haven't tried it in any course (I don't teach these days) but I've used an SC setup while supervising students doing their year-in-business at work, to similar effect.

Subversion would be my choice; CVS is deeply flawed and Git has a nasty learning curve for the beginner. We're a Win shop so the students can use TortoiseSVN / AnkhSVN for GUI integration; obviously this may not be true in your case.

I'd set up a single repository per course, with a folder at the base level for each student, and the usual repo arrangement inside it. It's very easy in SVN to set up per-folder access permissions in the repo config, so student's can only r/w to their own dir, but you can see everything.

Tynam