Course syllabus

Welcome to the course homepage of TDA555/DIT441 Introduction to Functional Programming! The course is given by the Department of Computer Science and Engineering during Study Period 1, 2023. 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.

We are going to use Slack as our tool for communication. You can join our Slack workspace via this link, do it as soon as possible!

You find additional information about the course below and via the following pointers:


Course literature

In this course we are going to use the obligatory course book 'Programming in Haskell' by Graham Hutton. It is an excellent book for learning Haskell written in a clear and compact style. The book is available in the Chalmers Store and in many other book shops. For each of the lectures with provide pointers to the relevant parts of the course book.

We also use the following material, which is freely available (online):

Other info: FAQ, Links, Tour of the Prelude

Course design

The course is organized as follows:

  • 8 weeks in total.
  • Two lectures per week (on average).
  • One exercise session per week, where you get help with the exercises.
  • Four lab assignments, spread out over 7 submission deadlines (so one each week except for the last week). 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.

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 contents of the exam is:

  • Everything we have talked about in the course
  • The contents of each lecture
  • QuickCheck properties and simple generators

The course is examined by:

  • a number of compulsory assignments during the course, typically carried out in groups of 3 students (3.0 hp)
  • an individual written exam at the end of the course (4.5 hp)

This year the exam is on the 25th of October in the afternoon. Make sure you register for the exam in time, the following pages lists the last day to register: The academic year - dates and times. There will be a re-exam in January and one in August. The time and place of the exams can be seen e.g. on the Chalmers syllabys page for the course.

Course summary:

Date Details Due