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
Module | Sp1 | Sp2 | Sp3 | Sp4 | Summer | Not Sp | Examination dates |
|---|---|---|---|---|---|---|---|
| 0111 Laboratory 3 c Grading: UG | 3 c | ||||||
| 0211 Examination 4.5 c Grading: TH | 4.5 c |
In programmes
- MPALG - Computer Science - Algorithms, Languages and Logic, Year 1 (elective)
- MPALG - Computer Science - Algorithms, Languages and Logic, Year 2 (elective)
- MPCSC - Computer Systems and Cybersecurity, Year 1 (elective)
- MPCSC - Computer Systems and Cybersecurity, Year 2 (elective)
- TIDAL - Computer Engineering - Common branch of study, Year 3 (compulsory elective)
- TKAUT - Automation and Mechatronics Engineering, Year 3 (elective)
- TKITE - Software Engineering, Year 2 (elective)
- TKITE - Software Engineering, Year 3 (elective)
Examiner
- David Sands
- Deputy Head Of Department, Computer Science and Engineering
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 courseApplicants 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.
