460-4144/01 – Praktické funkcionální programování (PFP)

Garantující katedraKatedra informatikyKredity4
Garant předmětuIng. Marek Běhálek, Ph.D.Garant verze předmětuIng. Marek Běhálek, Ph.D.
Úroveň studiapregraduální nebo graduálníPovinnostvolitelný odborný
Ročník1Semestrzimní
Jazyk výukyčeština
Rok zavedení2022/2023Rok zrušení
Určeno pro fakultyFEIUrčeno pro typy studianavazující magisterské
Výuku zajišťuje
Os. čís.JménoCvičícíPřednášející
BEH01 Ing. Marek Běhálek, Ph.D.
Rozsah výuky pro formy studia
Forma studiaZp.zak.Rozsah
prezenční Klasifikovaný zápočet 2+2
kombinovaná Klasifikovaný zápočet 0+14

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

Prezenční forma (platnost od: 2022/2023 zimní semestr)
Název úlohyTyp úlohyMax. počet bodů
(akt. za podúlohy)
Min. počet bodůMax. počet pokusů
Klasifikovaný zápočet Klasifikovaný zápočet 100  51 3
Rozsah povinné účasti: Účast na cvičeních je povinná a je kontrolována. S rozsahem povinné účastí seznámí studenty garant předmětu na začátku semestru.

Zobrazit historii

Podmínky absolvování předmětu a účast na cvičeních v rámci ISP: Splnění všech povinných úkolů v individuálně dohodnutých termínech. Rozsah účasti na cvičeních si student na začátku semestru dohodne s garantem předmětu.

Zobrazit historii

Výskyt ve studijních plánech

Akademický rokProgramObor/spec.Spec.ZaměřeníFormaJazyk výuky Konz. stř.RočníkZLTyp povinnosti
2024/2025 (N0613A140034) Informatika P čeština Ostrava 1 volitelný odborný stu. plán
2024/2025 (N0613A140034) Informatika K čeština Ostrava 1 volitelný odborný stu. plán
2024/2025 (N0688A140014) Průmysl 4.0 P čeština Ostrava 1 volitelný odborný stu. plán
2024/2025 (N2647) Informační a komunikační technologie (2612T025) Informatika a výpočetní technika P čeština Ostrava 1 povinně volitelný stu. plán
2024/2025 (N2647) Informační a komunikační technologie (2612T025) Informatika a výpočetní technika K čeština Ostrava 1 povinně volitelný stu. plán
2023/2024 (N0688A140014) Průmysl 4.0 P čeština Ostrava 1 volitelný odborný stu. plán
2023/2024 (N0613A140034) Informatika K čeština Ostrava 1 volitelný odborný stu. plán
2023/2024 (N0613A140034) Informatika P čeština Ostrava 1 volitelný odborný stu. plán
2023/2024 (N2647) Informační a komunikační technologie (2612T025) Informatika a výpočetní technika P čeština Ostrava 1 povinně volitelný stu. plán
2023/2024 (N2647) Informační a komunikační technologie (2612T025) Informatika a výpočetní technika K čeština Ostrava 1 povinně volitelný stu. plán
2022/2023 (N0613A140034) Informatika P čeština Ostrava 1 volitelný odborný stu. plán
2022/2023 (N0688A140014) Průmysl 4.0 P čeština Ostrava 1 volitelný odborný stu. plán
2022/2023 (N0613A140034) Informatika K čeština Ostrava 1 volitelný odborný stu. plán
2022/2023 (N2647) Informační a komunikační technologie (2612T025) Informatika a výpočetní technika P čeština Ostrava 1 povinně volitelný stu. plán
2022/2023 (N2647) Informační a komunikační technologie (2612T025) Informatika a výpočetní technika K čeština Ostrava 1 povinně volitelný stu. plán

Výskyt ve speciálních blocích

Název blokuAkademický rokForma studiaJazyk výuky RočníkZLTyp blokuVlastník bloku

Hodnocení Výuky



2023/2024 zimní
2022/2023 zimní