Popis předmětu - B4B36FUP

Přehled studia | Přehled oborů | Všechny skupiny předmětů | Všechny předměty | Seznam rolí | Vysvětlivky               Návod
B4B36FUP Funkcionální programování
Role:PO, PZ 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. 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/start

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í. 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
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 PO 4
BPOI_BO_2016 Před zařazením do oboru PO 4
BPOI3_2016 Software PO 4
BPOI3_2018 Software PZ 4
BPOI1_2018 Základy umělé inteligence a počítačových věd PZ 4


Stránka vytvořena 21.11.2024 14:51:06, semestry: Z,L/2024-5, Z/2025-6, L/2023-4, 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)