Přístupnostní navigace
E-application
Search Search Close
Course detail
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
Number of ECTS credits
Mode of study
Guarantor
Department
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
Prerequisites and corequisites
Basic literature
Recommended reading
Classification of course in study plans
Computer-assisted exercise
Teacher / Lecturer
Syllabus
1. F# in the modern .NET ecosystem2. Functional core: functions, composition, and expressiveness3. Advanced types: records, unions, tuples4. Pattern matching as a basic flow control mechanism5. Higher-order functions and functional design6. Collections, sequences, and lazy evaluation7. Error handling in professional FP applications8. Modules, architecture, and design patterns in F#9. Working with state in functional systems10. Asynchronous and parallel functional programming11. Computation expressions – custom workflow, syntactic sugar12. Functional domain design (FDD / DDD in F#)13. Trends
Lecture
1. Functional programming in the modern world2. Functions and composition as the main building blocks3. Algebraic data types – theory and domain modeling4. Pattern matching – deterministic flow control5. Higher-order functions and funkcionální design6. Collections, lazy evaluation, and infinite structures7. Functional error handling – from theory to practice8. Architectural principles in the functional world9. Working with state – theory and practice10. Asynchronous and parallel FP11. Computation expressions – a general mechanism for abstraction of computations12. Functional domain design (FDD)13. Building a fully functional architecture