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 favorite (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 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.

    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 January 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;
  • The contents of the guest lectures.
  • The Haste programming part in lab 4 will not be part of the exam.


    Example Exams

    Here are older exams and 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)