Popis předmětu - BE4B36FUP

Přehled studia | Přehled oborů | Všechny skupiny předmětů | Všechny předměty | Seznam rolí | Vysvětlivky               Návod
BE4B36FUP Functional Programming Rozsah výuky:2P+2C
Garanti:Pěchouček M. Role:P Jazyk výuky:EN
Vyučující:Lisý V., Pěchouček M. Zakončení:Z,ZK
Zodpovědná katedra:13136 Kreditů:6 Semestr:L

Anotace:

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í.

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
funkcionálního programování.
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
vyjadřovací sílu jazyka, typovaný Lambda kalkulus
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í
verifikace funkcionálních programů
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ů:

Plán Obor Role Dop. semestr
BPOI1_2016 Informatika a počítačové vědy P
BPOI_BO_2016 Před zařazením do oboru P
BPOI4_2016 Počítačové hry a grafika P
BPOI3_2016 Software P
BPOI2_2016 Internet věcí P
BPOI_BO_2018 Před zařazením do oboru P
BPOI4_2018 Počítačové hry a grafika P
BPOI3_2018 Software P
BPOI2_2018 Internet věcí P
BPOI1_2018 Základy umělé inteligence a počítačových věd P


Stránka vytvořena 16.9.2019 17:51:39, semestry: Z,L/2020-1, L/2018-9, Z,L/2019-20, 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)
Za obsah odpovídá: doc. Ing. Ivan Jelínek, CSc.