Introduction to Functional Programming – Exam Information | TDA555 / DIT440, LP1 2018 |
Home | Schedule | Labs | Lectures | Exercises | Exam | About | FAQ | Fire | WaitList | Slack | TimeEdit | YouTube | Links |
Introduction to Functional Programming – Exam Information | TDA555 / DIT440, LP1 2018 |
Home | Schedule | Labs | Lectures | Exercises | Exam | About | FAQ | Fire | WaitList | Slack | TimeEdit | YouTube | Links |
There will be a written exam at the end of the course. Make sure you register for the exam in time.
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
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.
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.
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;
Mock exam for part I, 2017 (new format) Mock Exam 2017 (answers)
Here are older exams and answers. Before 2017 part 1 has only 5 questions (not 7).
Re-Exam January 2011 (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)