Introduction to Functional Programming – Programming AssignmentsTDA555 / DIT440, LP1 2015
Home | Schedule | Labs | Exercises | Exam | About | FAQFire | Forum | TimeEdit | Links
Introduction to Functional Programming – Programming AssignmentsTDA555 / DIT440, LP1 2015
Home | Schedule | Labs | Exercises | Exam | About | FAQFire | Forum | TimeEdit | Links
There are 4 programming (lab) assignments in total. You have to pass all these to get a pass on the course. You are supposed to work in pairs, so please find a lab partner! Only under highly unusual circumstances do we allow people not to work in pairs. Please contact us in that case. We never allow 3 or more people in a lab group.

It is advisable that both students in a group are at a similar level. Otherwise, there is a risk that the more experienced student will do most of the work, and the other student will not learn much.

If you need to find a lab partner, please use the discussion forum of the course.

If you want to use the latest GHC version on the student computers (not required), please follow these instructions.

Lab 1: The Power Function

Lab 2: BlackJack (2 parts)

Lab 3: Sudoku (2 parts)

Lab 4: Drawing Functions (2 parts)

The Fire System

All lab assignments must be submitted using an electronic submission system called "Fire".

Remember to register both yourself and your lab partner in your lab group before you submit! By default, the submission system does not accept submissions made by single persons.

The Fire system

Lab Supervision

Supervision is scheduled at various times and places on Tuesdays, Wednesdays, Thursdays and Fridays. There are no lab supervision times on Mondays.

Note: These times are not obligatory! The idea is that all of you will spread out over the week. You cannot come all at once anyway to get lab supervision, but once or twice a week should be possible. You can also work at home on your own computer on the labs (but then you will not get any lab supervision).

The lab supervision schedule

You are encouraged to bring pen and paper to the lab sessions, as that makes it convenient for the supervisors to explain certain things.

Booking a work place

You have to book a place in a scheduled lab supervision slot before you come to a lab room. The booking lists are on the bulletin board in the basement below "Cafe Linsen" in Linsen. For each slot, there is an appropriate number of squares. To book a workplace for you and your lab partner, put both your account names in a square to book a workplace.

Fairness rules:

  • Do not book more places than available. When the squares are full, there is no more room.
  • Only book one time slot at a time! A time slot is two hours, from 8-10, 10-12, 13-15, or 15-17. Only when you are done, you can book a new time.

  • Deadlines

    Each lab (except the first one) has three deadlines.

    First deadline:

    Second deadline (one week later):

    Final deadline (1.5 weeks after second deadline):

    Submitting after a deadline is in principle unacceptable. It is much better to submit what you have before the deadline, even if you are not happy with it. If you have a good reason for an extension – contact us before the deadline.

    If you do miss a deadline, you may get a new chance at the end of the course. Otherwise, there is always a new opportunity to finish the labs next year.

    Grading feedback

    The feedback that you get on your lab submissions will make use of the following symbols:

    --    Your function f does not work

    Denotes something that has to be corrected and submitted again

    ==    Your function f is a bit too complicated

    Denotes something that has to be corrected only if the lab has to be submitted anyway

    **    I see you have solved the problem

    Just a regular comment, nothing to correct

    ++    Your implementation of f is better than mine!

    Something extra good, should of course not be corrected


    Cheating on labs is unacceptable. Cheating means:

    On the other hand, it is fully allowed to orally discuss assignments and solutions. The web forum can be used for general and specific questions, but of course not for posting parts of solutions.

    If you have problems, you should talk to us instead of copying from others. If needed, you may get more time and more help. If this is not enough, it is advisable to redo the course next year. This option makes much more sense than cheating.

    Some cheating can be detected by the lab graders, when they discover similar solutions (e.g. same code, but different comments, layout, variable names, etc.). At the end of the course, we will also use automatic software that checks for similarity between all submitted solutions.

    This is what happens if we detect cheating:

    But hopefully, this is not going to happen.

    Use of external libraries

    In priciple, the only external modules you are allowed to use in the labs are:

    Of course, there may be exceptions. For example, the module Text.Show.Functions is needed to test higher-order functions with QuickCheck, and Text.XHtml is used in an extra assignment in lab 1.

    You are encouraged to look around on Hackage and experiment with external libraries after you have solved the assignments. But keep in mind that the graders may not have those libraries installed, so don't use non-standard modules in the files you submit.