Concepts of Programming Languages: Multiple Choice

April 08, 2011

This semester I teach a course on concepts of programming languages for first-year computer science students. To make it interesting I decided to use Scala to study functional programming. In the next half of the course we’re going to study C for memory management, and JavaScript, in particular for its prototype-based inheritance.

I decided to use Scala, instead of Haskell, for the functional programming part. I had observed that few of the students who reached the master’s program had any functional programming skill, despite being exposed to Haskell. I think that Scala has a good chance of becoming a serious production language reaching a significant programmer population. If students would use the language after the course, perhaps more students would be trained in functional programming. I also had a personal interest in learning Scala.

Now, teaching Scala at this stage in the curriculum is not easy, as I have discovered. The language is quite complex with lots of delicious sugar, but that makes it difficult to see the wood for the trees, for students. I’m using the official Scala book, which is well written, but not targeted at this audience. If this is too work in the long run, we need better educational material. Taking up the subject this early, I risk having to develop that myself.

The first, Scala, part of the course is over. Time for the exam. Since the course is taken by over 120 students, I decided I need to make this a multiple choice exam to make grading feasible. The downside is that making the exam in the first place is much harder, as I discovered; this is my first multiple choice exam. The first mistake I made is to make the exam open book (students can take the book to the exam); that makes any recall questions pointless. Furthermore, asking multiple choice questions about a programming language course is hard. One of the skills is being able to construct programs. On the other hand, my experience with asking for code in (hand-written) exams is not too positive either. The code fragments are typically illegible and require imagination and interpretation from the grader. When trying to create suitable questions, I also realized that I lacked the necessary background, so I started a bibliography on multiple choice exams. Woodford and Bancroft provide some useful advice on composing questions and the mistakes to avoid. The discussion on scoring strategies by Frandsen and Schwartzbach is also useful. But, this will require further study.

Eventually I managed to compose an exam. I find it hard to predict whether students will be finished in 30 minutes and all score 100% or will need more than the allocated three hours and fail miserably. Monday I will be tested.