Course detail

Functional Programming

FSI-VFLAcad. year: 2026/2027

This course focuses on a deeper understanding of the principles of functional programming through the F# language. Students will learn the theoretical foundations of the functional paradigm, such as algebraic data types, function composition, immutability, and working with efficient data structures, and will learn to apply these concepts in the design of robust and secure software systems. The course also covers more advanced techniques, including pattern matching, functional error handling, computation expressions, and asynchronous and parallel computations, and emphasizes architectural principles typical of the functional world, such as separation of concerns and domain modeling using types. The course includes not only theory, but also practical application development, which will lead students to understand how the functional approach can be effectively used in modern software development.

Language of instruction

Czech

Number of ECTS credits

4

Mode of study

Not applicable.

Entry knowledge

Basic programming skills.

Rules for evaluation and completion of the course

The assessment is based on student activity in the course and the defense of the assigned project.

Aims

The aim of the course is to familiarize students with non-imperative approaches to problem solving and to deepen their knowledge of the principles of functional programming methods.

Study aids

Not applicable.

Prerequisites and corequisites

Not applicable.

Basic literature

Abraham, I., F# in Action, 2024,  ISBN 9781633439535  (EN)
Luger, G.F.; Stubblefield, W.A. AI Algorithms, Data Structures, and Idioms in Prolog, Lisp, and Java. Addison-Wesley 2008. (EN)
Sudipta, M.,  F# for Machine Learning Essentials: Get up and running with machine learning with F# in a fun and functional way, 2016,  ISBN-13 : 9781783989348  (EN)

Recommended reading

Not applicable.

Classification of course in study plans

  • Programme N-AIŘ-P Master's 2 year of study, summer semester, compulsory-optional

Type of course unit

 

Computer-assisted exercise

26 hod., compulsory

Teacher / Lecturer

Syllabus

1. F# in the modern .NET ecosystem
2. Functional core: functions, composition, and expressiveness
3. Advanced types: records, unions, tuples
4. Pattern matching as a basic flow control mechanism
5. Higher-order functions and functional design
6. Collections, sequences, and lazy evaluation
7. Error handling in professional FP applications
8. Modules, architecture, and design patterns in F#
9. Working with state in functional systems
10. Asynchronous and parallel functional programming
11. Computation expressions – custom workflow, syntactic sugar
12. Functional domain design (FDD / DDD in F#)
13. Trends

Lecture

13 hod., optionally

Teacher / Lecturer

Syllabus

1. Functional programming in the modern world
2. Functions and composition as the main building blocks
3. Algebraic data types – theory and domain modeling
4. Pattern matching – deterministic flow control
5. Higher-order functions and funkcionální design
6. Collections, lazy evaluation, and infinite structures
7. Functional error handling – from theory to practice
8. Architectural principles in the functional world
9. Working with state – theory and practice
10. Asynchronous and parallel FP
11. Computation expressions – a general mechanism for abstraction of computations
12. Functional domain design (FDD)
13. Building a fully functional architecture