Course syllabus for Functional programming

Course syllabus adopted 2026-02-20 by Head of Programme (or corresponding).

Overview

  • Swedish nameFunktionell programmering
  • CodeTDA452
  • Credits7.5 Credits
  • OwnerTKITE
  • Education cycleFirst-cycle
  • Main field of studyComputer Science and Engineering, Software Engineering
  • DepartmentCOMPUTER SCIENCE AND ENGINEERING
  • GradingTH - Pass with distinction (5), Pass with credit (4), Pass (3), Fail

Course round 1

  • Teaching language English
  • Application code 49125
  • Maximum participants140 (at least 10% of the seats are reserved for exchange students)
  • Open for exchange studentsYes

Credit distribution

0111 Laboratory 3 c
Grading: UG
3 c
0211 Examination 4.5 c
Grading: TH
4.5 c

In programmes

Examiner

Eligibility

General entry requirements for bachelor's level (first cycle)
Applicants enrolled in a programme at Chalmers where the course is included in the study programme are exempted from fulfilling the requirements

Specific entry requirements

The same as for the programme that owns the course
Applicants enrolled in a programme at Chalmers where the course is included in the study programme are exempted from fulfilling the requirements

Course specific prerequisites

Previous programming experience and basic knowledge of data structures and algorithms are also assumed. The course cannot be included in a degree which contains (or is based on another degree which contains) either the course TDA555 (Introduction to functional programming) or the course DAT710 (Functional Programming).

Aim

This course introduces a functional programming language and related concept to students that already have some knowledge in programming. The primary goal is to enable students to write realistic (small- to medium-size) programs, while introducing some of the fundamental concepts of computer science.

Learning outcomes (after completion of the course the student should be able to)

Knowledge and understanding:
  • describe the basic concepts of modern functional programming languages, such as recursion, pattern matching, polymorphism, first-class functions, higher-order functions, purity and immutability, and lazy evaluation,
  • describe a basic repertoire of functional programming techniques, such as algebraic data types, currying, infinite data structures, monads, and the role of data types in modelling and problem solving.
Competence and skills:
  • write small to medium-sized functional programs for a variety of applications,
  • utilize a diverse range of programming techniques characteristic of functional programming, including recursion, modelling with recursive data types, abstraction and reuse through higher-order functions, as well as leveraging polymorphism and monads,
  • implement effective tests for functional programs with the help of suitable tools.
Judgement and approach:
  • show the ability, in various contexts, to judge which programming techniques are most appropriate for solving the problem at hand
  • identify the strengths and possible weaknesses of the functional programming paradigm, compared to other programming paradigms.

Content

Concrete topics encountered in the course include:
  • defining (pure) functions,
    • pattern matching,
    • guards,
  • recursion,
  • data types,
    • basic and compound data types (e.g., lists and tuples),
    • user-defined algebraic data types,
    • recursive data types,
    • modelling with data types,
  • functions as first-class values,
    • lambda expressions,
    • partial application,
    • currying,
    • composition,
  • higher-order functions,
  • list comprehensions,
  • introduction to equational reasoning,
  • parametric polymorphism and type classes,
  • modules and abstract data types,
  • lazy evaluation and infinite values,
  • introduction to monads and IO,
  • efficiency of functional programs,
  • property-based testing.

Organisation

Lectures, computer labs, and exercises.

Literature

There is no mandatory literature for this course. A list of option external literature sources is maintained on the course web pages, in addition to video resources covering the contents of the course. 

Examination including compulsory elements

The course is examined by an individual written exam carried out in an examination hall at the end of course, and several compulsory assignments carried out in groups.

To pass the course, students must receive a passing grade in both modules. The grade for the entire course will be determined by the written exam.

The course examiner may assess individual students in other ways than what is stated above if there are special reasons for doing so, for example if a student has a decision from Chalmers about disability study support.

Functional programming | Chalmers