Detail předmětu

Funkcionální programování

FSI-VFLAk. rok: 2026/2027

Tento předmět se zaměřuje na hlubší pochopení principů funkcionálního programování prostřednictvím jazyka F#. Studenti se seznámí s teoretickými základy funkcionálního paradigmatu, jako jsou algebraické datové typy, kompozice funkcí, immutabilita nebo práce s efektivními datovými strukturami, a naučí se tyto koncepty aplikovat při návrhu robustních a bezpečných softwarových systémů. Kurz se věnuje také pokročilejším technikám, mezi které patří pattern matching, funkcionální error-handling, computation expressions či asynchronní a paralelní výpočty, a klade důraz na architektonické zásady typické pro funkcionální svět, jako je separation of concerns či modelování domény pomocí typů. Součástí výuky je nejen teorie, ale i praktická tvorba aplikací, které studenty povedou k porozumění tomu, jak lze funkcionální přístup efektivně využít v moderním softwarovém vývoji.

Jazyk výuky

čeština

Počet kreditů

4

Vstupní znalosti

Základní znalosti programování.

Pravidla hodnocení a ukončení předmětu

Hodnocení je založeno na aktivitě studentů v předmětu a obhajobě zadaného projektu.

Učební cíle

Cílem předmětu je seznámit studenty s neimperativními přístupy k řešení problémů a prohloubit jejich znalosti principů metod funkcionálního programování.

Základní literatura

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)

Zařazení předmětu ve studijních plánech

  • Program N-AIŘ-P magisterský navazující 2 ročník, letní semestr, povinně volitelný

Typ (způsob) výuky

 

Cvičení s počítačovou podporou

26 hod., povinná

Vyučující / Lektor

Osnova

1. F# v moderním .NET ekosystému
2. Funkcionální jádro: funkce, kompozice a expresivita
3. Pokročilé typy: records, unions, tuples
4. Pattern matching jako základní mechanismus řízení toku
5. Higher-order funkce a funkcionální design
6. Kolekce, sekvence a lazy evaluace
7. Error handling v profesionálních FP aplikacích
8. Moduly, architektura a návrhové vzory ve F#
9. Práce se stavem ve funkcionálních systémech
10. Asynchronní a paralelní funkcionální programování
11. Computation expressions – custom workflow, syntactic sugar
12. Funkcionální doménový návrh (FDD / DDD ve F#)
13. Moderní trendy

Přednáška

13 hod., nepovinná

Vyučující / Lektor

Osnova

1. Funkcionální programování v moderním světě
2. Funkce a kompozice jako hlavní stavební kámen
3. Algebraické datové typy – teorie a modelování domén
4. Pattern matching – deterministické řízení toku
5. Higher-order funkce a funkcionální design
6. Kolekce, lazy evaluace a nekonečné struktury
7. Funkcionální error-handling – od teorie k praxi
8. Architekturální principy ve funkcionálním světě
9. Práce se stavem – teorie a praxe
10. Asynchronní a paralelní FP
11. Computation expressions – obecný mechanismus pro abstrakci výpočtů
12. Funkcionální doménový návrh (FDD)
13. Výstavba plně funkcionální architektury