Haskell for non-Haskell's sake

John Hughes rjmh@cs.chalmers.se
Thu, 4 Sep 2003 16:34:38 +0200 (MET DST)


I use Haskell and Wash/CGI for administering students lab work. Students
solve programming exercises in pairs, register their pair, and upload
their solution over the web. The pair gets a "home page" on which they can
see their grade and comments from their tutor, and also submit new
solutions if their tutor is unhappy with the first. Tutors have a home
page on which they can see which assignments they still need to mark,
download the student's code, set grades and enter comments, and also view
a summary of results for all students they are responsible for. As the
administrator, I can see results for each student, which submissions are
waiting to be marked, what the success rate is, and so on. (The
administrator's interface is a bit cruder than the other two, since I can
always hack the code when I need some more information...). The system
also packages up all submitted solutions ready for submission to an
automated plagiarism detector.

The benefits of the system are that students, tutors, and the
administrator can work from any machine on the Internet -- for example, at
home; submission and returns are quicker and easier for both students and
tutors, so feedback is quicker; tutors and the administrator have a much
better overview of the state of students' work; solutions are kept in a
uniform form which makes automated cheat detection easy.

I wrote the system for my (Haskell!) programming course, with 170 students
last year, and it is now also being used (at least) for our Java course
and a cryptography course. It consists of about 600 lines of Haskell and
18 lines of C.

John Hughes