FI:IB016 Seminář z funkc. programování - Informace o předmětu
IB016 Seminář z funkcionálního programování
Fakulta informatikyjaro 2025
- Rozsah
- 1/1/0. 2 kr. (plus ukončení). Ukončení: z.
Vyučováno kontaktně - Vyučující
- RNDr. Martin Jonáš, Ph.D. (přednášející)
Bc. Jakub Šárník (pomocník) - Garance
- RNDr. Martin Jonáš, Ph.D.
Katedra teorie programování – Fakulta informatiky
Dodavatelské pracoviště: Katedra teorie programování – Fakulta informatiky - Předpoklady
- IB015 Neimperativní programování
Pro zapsání do kursu stačí mít znalost Haskellu v rozsahu předmětu IB015 Neimperativní programování a kladný vztah k funkcionálnímu programování. - Omezení zápisu do předmětu
- Předmět je nabízen i studentům mimo mateřské obory.
Předmět si smí zapsat nejvýše 45 stud.
Momentální stav registrace a zápisu: zapsáno: 0/45, pouze zareg.: 57/45, pouze zareg. s předností (mateřské obory): 55/45 - Mateřské obory/plány
- Analýza a zpracování obrazu (program FI, N-VIZ)
- Bioinformatika a systémová biologie (program FI, N-UIZD)
- Computer Games Development (program FI, N-VIZ_A)
- Computer Graphics and Visualisation (program FI, N-VIZ_A)
- Computer Networks and Communications (program FI, N-PSKB_A)
- Cybersecurity Management (program FI, N-RSSS_A)
- Diskrétní algoritmy a modely (program FI, N-TEI)
- Formální analýza počítačových systémů (program FI, N-TEI)
- Grafický design (program FI, N-VIZ)
- Graphic Design (program FI, N-VIZ_A)
- Hardware Systems (program FI, N-PSKB_A)
- Hardwarové systémy (program FI, N-PSKB)
- Image Processing and Analysis (program FI, N-VIZ_A)
- Informační bezpečnost (program FI, N-PSKB)
- Informatika (program FI, B-INF) (2)
- Informatika ve vzdělávání (program FI, B-IVV) (2)
- Information Security (program FI, N-PSKB_A)
- Kvantové a jiné neklasické výpočetní modely (program FI, N-TEI)
- Nasazení a provoz softwarových systémů (program FI, N-SWE)
- Návrh a vývoj softwarových systémů (program FI, N-SWE)
- Počítačová grafika a vizualizace (program FI, N-VIZ)
- Počítačové sítě a komunikace (program FI, N-PSKB)
- Principy programovacích jazyků (program FI, N-TEI)
- Programování a vývoj aplikací (program FI, B-PVA)
- Řízení kyberbezpečnosti (program FI, N-RSSS)
- Řízení vývoje služeb (program FI, N-RSSS)
- Řízení vývoje softwarových systémů (program FI, N-RSSS)
- Services Development Management (program FI, N-RSSS_A)
- Software Systems Development Management (program FI, N-RSSS_A)
- Software Systems (program FI, N-PSKB_A)
- Softwarové systémy (program FI, N-PSKB)
- Strojové učení a umělá inteligence (program FI, N-UIZD)
- Učitel informatiky a správce sítě (program FI, N-UCI)
- Učitelství informatiky pro střední školy (program FI, N-UCI) (2)
- Vývoj počítačových her (program FI, N-VIZ)
- Zpracování a analýza rozsáhlých dat (program FI, N-UIZD)
- Zpracování přirozeného jazyka (program FI, N-UIZD)
- Cíle předmětu
- Studenti předmětu si podstatně rozšíří své znalosti funkcionálního programování. Po absolvování kursu by měli být schopni řešit netriviální programátorské problémy s pomocí Haskellu a získat přehled o praktických využitích tohoto funkcionálního jazyka.
- Výstupy z učení
- Student bude po absolvování předmětu schopen:
— napsat pokročilejší Haskellový program o cca 100 až 200 řádcích;
— zadaný problém analyzovat a vhodně funkcionálně dekomponovat;
— používat podpůrné nástroje pro vývoj v Haskellu, jako je správce balíků Cabal, repositář balíků Hackage, linter HLint a testovací framework QuickCheck;
— dokázat popsat teoretické funkcionální koncepty;
— mít představu o některých pokročilejších funkcionálních technikách používaných v praxi. - Osnova
- Pokročilá syntaxe, systém modulů, vlastní typové třídy, pokročilé datové struktury.
- Systém balíčků (Hackage/Stackage), podpůrné nástroje (Cabal, HLint, Haddock).
- Funktory, aplikativní funktory, monády.
- Automatické generování testů dle specifikace (QuickCheck).
- Vstup a výstup v Haskellu, zpracování chyb a výjimek (Maybe, Either, výjimky, chybové stavy).
- Pologrupy, monoidy, třídy Foldable a Traversable.
- Vyhodnocovací strategie (lenost vs. striktnost).
- Pokročilé techniky procházení datových struktur (Zippers, Lens).
- Monadické parsování (Parsec).
- Monády pro sdílený zápis, čtení a udržování stavu (Writer, Reader, State).
- Transformátory monád (MaybeT, ErrorT).
- Práce s řetězci a další užitečná rozšíření v GHC.
- Využití Haskellu v praxi.
- Literatura
- LIPOVAČA, Miran. Learn You a Haskell for Great Good!: A Beginner's Guide. First Edition. San Francisco, CA, USA: No Starch Press, 2011, 400 s. ISBN 978-1-59327-283-8. URL info
- O'SULLIVAN, Bryan, John GOERZEN a Don STEWART. Real World Haskell. First Edition. O'Reilly Media, Inc., 2009, 670 s. ISBN 978-0-596-51498-3. URL info
- Záložky
- https://is.muni.cz/ln/tag/FI:IB016!
- Výukové metody
- Cvičení kombinující výklad a samostatné programování; domácí úlohy.
- Metody hodnocení
- Podmínkou pro získání zápočtu je získání dostatečného množství bodů z domácích úloh. Účast na cvičeních je nepovinná, ale důrazně doporučená.
- Navazující předměty
- Informace učitele
- https://is.muni.cz/auth/el/1433/jaro2023/IB016/index.qwarp
- Další komentáře
- Předmět je vyučován každoročně.
Výuka probíhá každý týden.
- Statistika zápisu (nejnovější)
- Permalink: https://is.muni.cz/predmet/fi/jaro2025/IB016