Introduction to Functional Programming – Exam Information TDA555 / DIT440, LP1 2017 Home | Schedule | Labs | Lectures | Exercises | Exam | About | FAQ Fire | WaitList | Group | TimeEdit | YouTube | Links
 Introduction to Functional Programming – Exam Information TDA555 / DIT440, LP1 2017 Home | Schedule | Labs | Lectures | Exercises | Exam | About | FAQ Fire | WaitList | Group | TimeEdit | YouTube | Links

There will be a written exam at the end of the course. Make sure you register for the exam in time.

### 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 favourite (spoken) language.

You may not have 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 (minor updates for 2016) 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 (2017 onwards) consists of 7 separate assignments. You have to complete 5 out of 7 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
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
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
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.

Points on Part II can be counted towards Part I if needed, but this is very unlikely to happen in practice.

There will be a re-exam in December 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;

### Example Exams

Mock exam for part I, 2017 (new format) Mock Exam 2017

Here are older exams and answers. Before 2017 part 1 has only 5 questions (not 7).

There is also a mock-up exam:

Here are some older exams (different structure):