Introduction to Functional Programming – Exam InformationTDA555 / DIT440, LP1 2017
Home | Schedule | Labs | Lectures | Exercises | Exam | About | FAQFire | WaitList | Group | TimeEdit | YouTube | Links
Introduction to Functional Programming – Exam InformationTDA555 / DIT440, LP1 2017
Home | Schedule | Labs | Lectures | Exercises | Exam | About | FAQFire | 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.

Exam Structure and Grades

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
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

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

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.

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).

Exam December 2016 (answers)

Exam October 2016 (answers)

Exam October 2015 (answers)

Exam January 2015 (answers)

Exam October 2014(answers)

Exam August 2014 (answers)

Exam January 2014 (answers)

Exam October 2013 (answers)

Exam August 2013 (answers)

Exam August 2012 (answers)

Exam October 2011 (answers)

Re-Exam August 2011 (answers)

Re-Exam January 2011 (answers)

Exam October 2010 (answers)

There is also a mock-up exam:

Mock-up exam made 2010 (answers)

Here are some older exams (different structure):

Exam from January 2007 (answers)

Exam from October 2006 (answers)