Introduction to Functional Programming


TDA555 / DIT440 Introduction to Functional Programming lp1 HT19 (7.5 hp)

Course is offered by the department of Computer Science and Engineering

Contact details

  • Examiner & lecturer: Thomas Hallgren.
  • Teaching assistants: Elisabet Lobo-VesgaJeff / Yuting Chen, Abhiroop Sarkar, Felix Naredi (naredi (at), Gunnar Stenlund (gunnar.stenlund (at) , Sarosh Nasir (sarosh.nasir (at)
  • Student representatives: Chalmers: Kevin Bäckstäde (kevin.backstade (at), Mirco Ghadri (mircog at, Linus Sundkvist (lsundkvist1 (at), Vera Svensson (vera.svensson (at), Filip Torphage (filip.torphage1 (at) GU: Famara Nyassi (famara.nyassi (at), Andreas Olsson (andreasolsson1994 (at), Oskar Pålsson (guspalssos (at), Josef Rasheed (josefir98 (at)

Course purpose

This is an introductory course in programming, using the functional language Haskell as the medium of instruction. The primary goal is to enable students to write realistic (small) programs for real world applications, while introducing some of the fundamental concepts of computer science.


See TimeEdit. The first lecture is on Tuesday 2019-09-03 at 13:15.

Course literature etc

Course design

The course is organized as follows:

  • 8 weeks in total.
  • Two lectures per week.
  • One exercise session per week, where the main idea is to get help with the exercises.
  • Four programming (lab) assignments, spread out over 8 submission deadlines. All lab assignments need to be completed in order to complete the course.
  • One written exam at the end of the course; this is done individually.
  • Your final grade will be determined by your grade on the written exam only.

Assignments and deadlines

There is a separate page about the assignments with more information.

In summary, you are required to work in groups of 3. You have to pass all assignments to get a pass on the course. The assignments are:

Assignment Part Deadline
Lab 1: Power to the People 1 Monday 2019-09-09 12:00
Lab 2: Blackjack
(2 parts)
2A Monday 2019-09-16 12:00
2B Monday 2019-09-23 12:00
Lab 3: Tetris
(3 parts)
3A Monday 2019-09-30 12:00
3B Monday 2019-10-07 12:00
3C Monday 2019-10-14 12:00
Lab 4A: Simplify 4A Monday 2019-10-21 12:00
Lab 4B: Famous 4B Friday 2019-10-25 23:59

Some labs have extra assignments. These are for your own pleasure; there are no bonus points awarded.

Lectures and exercises

There is a separate page that describes the contents of the lectures in more detail.

Week 1

Week 2

Week 3

Week 4

Week 5

Week 6

Week 7

Week 8

Learning objectives and syllabus

Link to the syllabus Chalmers
Link to the syllabus GU

Learning outcomes:

  • describe the basic concepts of modern functional programming languages, such as: data types, first- and higher-order functions, lazy evaluation, infinite data structures
  • describe a basic repertoire of functional programming techniques, such as: recursion, testing, the role of data types in modelling and problem solving
  • write small functional programs for various applications
  • structure programs in a way that makes them easy to understand and modify, by appropriate application of data types, abstraction, and code reuse
  • implement effective tests for functional programs with help of suitable tools
  • show the ability, in various contexts, to judge which programming techniques are most appropriate for solving the problem at hand

Examination form

The course is examined by

  • a number of compulsory assignments during the course, typically carried out in groups of 2-3 students. (3.0hp)
  • an individual written exam carried out in an examination hall at the end of course. The only aid (“hjälpmedel”) you may take into the examination hall with you is an English dictionary, or an English-X dictionary, where X is your favourite (spoken) language. (4.5hp)

There is a separate page with more information about the written exam.

Changes made since the last occasion

The course will be essentially the same as last year.

Course summary:

Date Details Due