Assignments

General Information

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 Jonas or 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.

Rules - IMPORTANT

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 4 attempts to fix your submission if necessary (so: 1st part submission - feedback - full lab submission - feedback - revised submission - feedback - final submission - no feedback before the course is over). If there are still issues left after your 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.

Deadlines

  •  
Assignment 1 - part 1     Jan 30     (Wed Week 2)
  •  
Assignment 1 - part 2     Feb 6     (Wed Week 3)
  •  
Assignment 2 - part 1     Feb 13     (Wed Week 4)
  •  
Assignment 2 - part 2     Feb 27     (Wed Week 6)
  •  
Assignment 3 - part 1     Mar 6     (Wed Week 7)
  •  
Assignment 3 - part 2     Mar 17     (Sun Exam week)
  •  
Final Deadline     Mar 24     (Sun Week 1 SP4)

Assignment 1 - Turtle Graphics

Design and implement an embedded language for turtle graphics.

Details.

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.

Details.

Assignment 3 - Open project

The third assignment is a more open project where you read, understand, extend and evaluate an existing Haskell package.

Details.

[Chalmers]
[GU]