Assignment 3


This lab assignment will require you to read, understand, evaluate and extend an advanced Haskell code base.

You will choose an existing Open Source library package (preferably from Hackage) and use it for a small project.

Part I

Deadline: Sun Mar 1

This part of the lab is just for you to choose a Haskell library and motivate your choice. You should start the next part before the deadline of this one.

First choose a package on Hackage which:

Then your task is to write a short report (1-2 pages) explaining why you chose this package, which learning outcomes you think it relates to, and how it relates to them. This report will be extended in Part II - Task 2. Also, write a preliminary description of what you intend to do for Part II - Task 1.

Note that for larger libraries, it may be intractable to consider the whole library. If so, you may select some well defined part of the library.

Troubles deciding on a package? Visit the package suggestion page.

Part II

Deadline: Sun Mar 15

You will now work with the library you have chosen.

Part II - Task 1 - Writing code

In this part you will write Haskell code that uses or extends your chosen library. The code could be in any one of these categories (or possibly a mix of them):

The expected work load for assignment 3 (all parts together) is around 40 hours. Try to demonstrate that you master (some of) the learning outcomes of the AFP course.

If you have questions, talk to the teaching assistants (Dan and Anton).

Part II - Task 2 - Documentation

Write a report about you have been doing in the lab. The report should include:

Use concepts you have learned in the course to express yourselves.



The deadline for Part I is Sun Mar 1 and for Part II Sun Mar 15. The final deadline is Sun Mar 22. (Please read the rules on what first and final deadline mean.)

Clean Code

Before you submit your code, Clean It Up! Submitting clean code is Really Important, and simply the polite thing to do. After you feel you are done, spend some time on cleaning your code; make it simpler, remove unnecessary things, etc. We will reject your solution if it is not clean. Clean code:


Your submission needs to include the following information:

Before you submit, please read the note on cheating.

You are supposed to submit your solution using the Fire system.

Note: You do NOT have to use zip/gzip/tar/bzip on your files! Just upload and each file that is part of your solution. Don't forget to submit when you have uploaded all the files.

To the Fire System

Good luck!