460-4144/01 – Praktické funkcionální programování (PFP)
Garantující katedra | Katedra informatiky | Kredity | 4 |
Garant předmětu | Ing. Marek Běhálek, Ph.D. | Garant verze předmětu | Ing. Marek Běhálek, Ph.D. |
Úroveň studia | pregraduální nebo graduální | Povinnost | volitelný odborný |
Ročník | 1 | Semestr | zimní |
| | Jazyk výuky | čeština |
Rok zavedení | 2022/2023 | Rok zrušení | |
Určeno pro fakulty | FEI | Určeno pro typy studia | navazující magisterské |
Cíle předmětu vyjádřené dosaženými dovednostmi a kompetencemi
Cílem předmětu je ukázat praktické nasazení čistě funkcionálních programovacích jazyků pro vývoj reálných aplikací. Jako stěžejní projekt bude realizován webový informační systém, kde bude přední část implementována v Elmu a zadní část bude v Haskellu. V rámci projektu budou řešeny i další aspekty jako je použití databáze nebo zpracování různých formátů dat. Kromě vlastních programovacích jazyků a s tím souvisejícího funkcionálního stylu programování budou studenti seznámeni s nástroji a obecně prostředím pro vývoj takto koncipovaných složitějších aplikací.
Po absolvování předmětu budou účastnící schopni prakticky aplikovat funkcionální styl programování pro řešení reálných úloh. Budou schopni zhodnotit vhodnost jejich použití a výhody či nevýhody, které to přinese. Detailněji se seznámí s programovacími jazyky Haskell a Elm (oba jsou si syntakticky velmi podobné). Také si osvojí funkcionální styl programování, který může být výhodný i v jiných prostředích než u čistě funkcionálních programovacích jazyků. Většina dneska dominantních technologií podporuje mnoho paradigmat programování a je spíše volbou programátora, jaký styl zvolí pro své řešení. Předmět umožní využít funkcionální styl programování v mnoha ohledech nezávisle na použitém prostředí.
Vyučovací metody
Přednášky
Cvičení (v učebně)
Anotace
Funkcionální styl programování je dobře zavedený, ale po celá desetiletí se většinou používal jen na univerzitách a obvykle byl považován za pěkným konceptem bez skutečné praktické aplikace. Čistě funkční jazyky, jako je Haskell, se zřídka používaly pro reálné aplikace. Právě teď prochází funkcionální styl programování jakousi renesancí. Je integrován do mnoha nejpopulárnějších multiparadigmatických jazyků jako je Python, Javascript nebo C #. Navíc se objevily a začaly se používat nové čisté funkcionální jazyky jako Scala, F # nebo Clojure. S technologiemi jako JVM (Scala) nebo .NET CLR (F #) je ještě snazší mít projekt integrující různé styly programování.
V tomto předmětu se zaměříme na praktické aspekty vývoje aplikací pomocí čistě funkčních programovacích jazyků Haskell a Elm. Jako klíčový projekt vytvoříme webový informační systém, kde bude přední část implementována v Elmu a zadní část bude v Haskellu. Budou propojeny pomocí REST Api. Kromě toho se budeme zabývat dalšími problémy, jako je použití databáze nebo zpracování různých formátů dat. Na tomto projektu bude prokázáno, že tyto funkcionální jazyky jsou vhodné pro vývoj aplikací v reálné praxi. Navíc si ukážeme, že jejich použití má některé klíčové výhody. Kromě samotného programování se také naučíme používat vybranou klíčovou infrastrukturu a nástroje podporující vývoj reálných aplikací.
Povinná literatura:
[1] Bryan O'Sullivan, John Goerzen, and Don Stewart. 2008. Real World Haskell (1st. ed.). O'Reilly Media, Inc. Dostupné online: http://book.realworldhaskell.org/
[2] Lipovaca M.:Learn You a Haskell for Great Good!: A Beginner's Guide (1st ed.). No Starch Press, San Francisco, CA, USA, 2011. Dostupné online: http://learnyouahaskell.com/
Doporučená literatura:
[3] Thompson S.: The Haskell: The Craft of Functional Programming (3nd ed.). Addison-Wesley Professional, October 2, 2011, ISBN-10: 0201882957.
Forma způsobu ověření studijních výsledků a další požadavky na studenta
Nejdůležitějším aspektem hodnocení bude realizace projektu – webový informační systém. Ten bude rozložen do menších částí, každá bude hodnocena zvlášť. Celkově bude tento projekt hodnocen 70 body. Zbylých 30 bodů bude rozděleno za aktivitu na cvičeních.
E-learning
Další požadavky na studenta
Na studenty nejsou kladeny žádné další požadavky.
Prerekvizity
Předmět nemá žádné prerekvizity.
Korekvizity
Předmět nemá žádné korekvizity.
Osnova předmětu
Osnova přednášek
Seznámení se s jazykem Haskell, úvod do funkcionálního programování.
1. Úvod – platforma Haskell, interpret GHCI, Jednoduché funkce využití rekurze
2. Funkce – řešení složitějších problému, základní knihovny, problematika typových tříd
3. Seznamy a uživatelské datové typy – základní způsob práce, generátory seznamů, funkcionální způsob řešení problémů.
Nástroje pro funkcionální programování
4. Nástroje pro správu projektů a knihoven (Stack, Cabal) a podpůrné nástroje pro vývoj (např. debugger).
5. Testování
Pokročilé aspekty programování v jazyce Haskell
6. Programování s akcemi – teoretické aspekty, monády, příklady (monáda ST).
7. Vstup a výstup, řešení chyb.
Vybrané knihovny jazyka Haskell
8. Zpracování vybraných formátu dat (JSON, XML), překlad vstupu.
9. Paralelní programování, práce se sítí, webové REST api.
10. Použití databáze.
11. GUI v jazyce Haskell
Webové GUI v jazyce ELM.
12. Elm – základní komponenty.
13. ELM – vybrané technologie, aplikace stylů.
14. Elm – propojení s backend v jazyce Haskell.
Cvičení budou korespondovat s přednáškami, předpokládá se, že všechna cvičení budou na počítačových učebnách.
Podmínky absolvování předmětu
Výskyt ve studijních plánech
Výskyt ve speciálních blocích
Hodnocení Výuky