Introduction to Functional Programming -- Exam InformationTDA555 / DIT440, LP1, HT2012
Home | Schedule | Labs | Exercises | Exam | AboutFire | Forum | TimeEdit | Links | 2011
There will be a written exam at the end of the course.

Exam Rules

• The exam questions will be asked in English.

• The only aid ("hjälpmedel") you may take into the exam room with you is an English dictionary, or an English-X dictionary, where X is your favorite (spoken) language.

• You may not a text book with you.

• There are no computers in the exam room! You will need to solve the programming problems on paper -- experience at the computer will help you here.

• You will be provided with a list of standard Haskell functions at the exam.

The grades awarded on the exam are 3, 4, 5 for Chalmers students, and G, VG for GU students. (G on the GU side corresponds to 3 or 4 on the Chalmers side; VG corresponds to a 5.)

The exam has a different structure compared to most other exams. Please read this carefully.

The exam is divided into two parts, Part I and Part II.

 Part I: If you want to get a 3 or a G, you only have to do Part I. Part I consists of 5 separate assignments. You have to complete 4 out of 5 assignments in order to pass the exam. Typically, each assignment in Part I will have one of the following themes: write a recursive function over a list write a recursive function over a number write a function that needs to use guards use a standard higher-order function such as map, filter, or takeWhile to solve a given problem write a recursive function over a given recursive datatype design your own (recursive) datatype write a non-recursive function over a recursive datatype simplify the definition of a function that does too much pattern matching, unnecessary case distinctions, has complicated Boolean expressions, etc. write a property for a given function write a function that does some simple IO (reading/writing files, printing on the screen, user input)

 Part II: If you want to get a 4, 5, or a VG, you also have to do Part II. Part II consists of 2 separate, bigger assignments. If you want to get a 4, you only have to complete one of these (your choice). If you want to get a 5 or a VG, you have to complete both of these. Typically, you will encounter the following problems in these assignments: dealing with lists-of-lists, lists-of-tuples advanced uses of list comprehensions doing recursion over a list that does not follow that standard recursion pattern over lists you need to define and use a helper function that was not specified in the assignment writing your own higher-order function dealing with a more complicated recursive datatype dealing with a recursive data structure

"Completing" an assignment means that your answer is judged to be "good enough". In other words, you are allowed to make some small mistakes in your answer. "Good enough" means that your answer has to show clearly that you would have gotten the answer completely correct if you had had a computer as help, for example.

Make sure you are reasonably sure about your answers to Part I before you move to Part II! 4 out 5 assignments for Part I is still required to pass the whole exam, even if you have solved the assignments in Part II.

There will be a re-exam in January and one in August.

Exam Contents

The contents of the exam is: Everything we have talked about in the course, including

• The contents of each lecture;
• QuickCheck properties and simple generators;
• The contents of the guest lectures.
• The GUI programming part using Gtk2Hs will not be part of the exam.

Example Exams

Here are older exams and answers: