General Information

The assignments below are are step by step migrated from the previous course instance (labelled "2009:" below) to the current 2010 instance. There are three programming assignments, which you should do in pairs. If you have a good reason for doing the assignments by yourself, please contact Patrik. You need to pass all three assignments in order to pass the course.

Each of the assignments is divided into two parts with separate deadlines.

The assignments have to be handed in using the Fire system.


Please read these early and carefully!
  1. Deadlines are hard. If you for some reason cannot make the deadline, contact us before the deadline, and tell us what your reason is, together with a realistic proposal of a new personal deadline for you. You may then get an extension of the deadline.
  2. You have a total number of 3 attempts to fix your submission if necessary (so: 1st submission - feedback - 2nd submission - feedback - 3rd and final submission). If there are still issues left after your 3rd and final submission, your submission will be rejected. So please read feedback carefully! Of course, you are allowed to ask questions if issues are unclear.
  3. The assignments will be graded on a scale of 3 to 5 and will count towards your final grade on the course.
  4. Your last attempt has to be submitted before the final deadline. If you fail to do this, your submission will be rejected.
  5. Cheating is taken very seriously. Before you start working on the assignments, please read the note on cheating.


Assignment 1 - part 1     Jan 29     (Fri Week 2)
Assignment 1 - part 2     Feb 5     (Fri Week 3)
Assignment 2 - part 1     Feb 12     (Fri Week 4)
Assignment 2 - part 2     Feb 19     (Fri Week 5)
Assignment 3 - part 1     Feb 26     (Fri Week 6)
Assignment 3 - part 2     Mar 5     (Fri Week 7)
Final Deadline     Mar 12     (Fri Exam week)

Assignment 1 - Turtle Graphics

Design and implement an embedded language for turtle graphics.


Assignment 2 - Replay Monad

Implement a monad which allows computations to be replayed, and implement a programming model for CGI programs on top of this monad.


Assignment 3 - Open project

(2009:) The third assignment is a more open project where you can choose between a few different problems or, if you have an interesting idea, pick a problem of your own.

The project should take the form of a domain specific language for some interesting domain and an application of the language to a particular problem.