Popis předmětu - B4B36FUP
| B4B36FUP | Funkcionální programování | ||
|---|---|---|---|
| Role: | PZ, PO | Rozsah výuky: | 2P+2C |
| Katedra: | 13136 | Jazyk výuky: | CS |
| Garanti: | Pěchouček M. | Zakončení: | Z,ZK |
| Přednášející: | Horčík R., Votroubek T. | Kreditů: | 6 |
| Cvičící: | Horčík R., Němeček J., Votroubek T., Zorek M. | Semestr: | L |
Webová stránka:
https://cw.fel.cvut.cz/wiki/courses/fup/startAnotace:
Předmět podává úvod do technik funkcionálního programování, výhod a nevýhod funkcionálního přístupu, a nejběžnějších použití těchto technik v praxi. Tyto jazyky jsou deklarativní v tom smyslu, že programátor symbolicky popíše problém, který má být řešen, místo výčtu konkrétní posloupnosti akcí, které má počítač provést. Tento přístup umožnuje soustředit se na jádro problému a implementovat i velmi komplikované algoritmy kompaktně. Funkcionální programování má nesporné výhody pro paralelizaci a formální verifikaci algoritmů a nejužitečnější koncepty funkcionálního programování stále více pronikají i do standardních programovacích jazyků. Díky důrazu na operace se symboly a namísto čísel, funkcionální programování také nalezlo významné aplikace v umělé inteligenci, např. v agentových systémech či v symbolickém strojovém učení. Tento předmět je také součástí meziuniverzitního programu prg.ai Minor. Ten spojuje to nejlepší z výuky AI v Praze s cílem poskytnout studujícím hlubší a širší vhled do oboru umělé inteligence. Více informací je k dispozici na webu https://prg.ai/minor.Osnovy přednášek:
| 1. | Úvod do deklarativních programovacích jazyků. Srovnání s klasickými imperativními jazyky. Hlavní principy a praktické aplikace |
| 2. | LISP: základní jazykové idiomy, atomy, seznamy, rekurze | |
| 3. | LISP: lambda abstrakce, vestavěné funkce, pokročilé datové struktury | |
| 4. | LISP: vestavěné funkce vyšších řádů | |
| 5. | LISP: nekonečné datové struktury, uzávěry (closures) | |
| 6. | Úvod do Lambda kalkulu, vztah k funkcionálnímu programování | |
| 7. | Ekvivalence funkcionálního programování s Turingovím strojem | |
| 8. | Typy ve funkcionálních jazycích, jejich smysl a důsledky na |
| 9. | Haskell: typy, vzory, vestavěné funkce, lambda abstrakce | |
| 10. | Haskell: líné vyhodnocování, částečná aplikace funkce | |
| 11. | Haskell: monády | |
| 12. | Automatické optimalizace ve funkcionálním programování, formální |
| 13. | Funkcionální programování a paralelní výpočty | |
| 14. | Funkcionální rysy v populárních programovacích jazycích a nástrojích |
Osnovy cvičení:
Literatura:
Hudak, Paul, and Joseph H. Fasel. "A gentle introduction to Haskell." ACM Sigplan Notices 27.5 (1992): 1-52. Harvey, Brian, and Matthew Wright. Simply Scheme: introducing computer science. Mit Press, 1999.Požadavky:
Předmět je zahrnut do těchto studijních plánů:
| Stránka vytvořena 14.4.2026 17:52:16, semestry: Z/2028-9, L/2029-30, L/2026-7, Z/2027-8, L/2025-6, L/2027-8, Z/2025-6, Z/2026-7, L/2028-9, připomínky k informační náplni zasílejte správci studijních plánů | Návrh a realizace: I. Halaška (K336), J. Novák (K336) |