IB016 Seminář z funkcionálního programování

Fakulta informatiky
jaro 2019
Rozsah
0/2. 2 kr. (plus ukončení). Ukončení: z.
Vyučující
Mgr. Adam Matoušek (přednášející)
Mgr. Henrieta Micheľová (přednášející)
RNDr. Vladimír Štill, Ph.D. (přednášející)
RNDr. Martin Ukrop, Ph.D. (přednášející)
Bc. et Bc. Martin Zahradníček, MSc (pomocník)
Garance
prof. RNDr. Mojmír Křetínský, CSc.
Katedra teorie programování – Fakulta informatiky
Dodavatelské pracoviště: Katedra teorie programování – Fakulta informatiky
Rozvrh
Čt 21. 2. až Čt 16. 5. Čt 18:00–19:50 B130
Předpoklady
IB015 Neimperativní programování
Pro zapsání do kurzu 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 18 stud.
Momentální stav registrace a zápisu: zapsáno: 0/18, pouze zareg.: 0/18, pouze zareg. s předností (mateřské obory): 0/18
Mateřské obory/plány
Cíle předmětu
Studenti předmětu si podstatně rozšíří své znalosti funkcionálního programování. Po absolvování kurzu 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 balíčkovací manažer cabal, repozitář 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).
  • Monoidy, zpracování argumentů příkazové řádky.
  • Vyhodnocovací strategie (lenost vs. striktnost).
  • Kontextové 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
Kurz se sestává z dvouhodinových cvičení, ve kterých jsou studentům prezentována témata využití funkcionalního programování v praxi. Kromě toho je požadováno řešení pěti domácích úloh týkajících se probírané látky (implemetace + peer-review).
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/jaro2019/IB016/index.qwarp
Další komentáře
Studijní materiály
Předmět je vyučován každoročně.
Předmět je zařazen také v obdobích jaro 2010, jaro 2011, jaro 2012, jaro 2013, jaro 2015, jaro 2016, jaro 2017, jaro 2018, jaro 2020, jaro 2021, jaro 2022, jaro 2023, jaro 2024, jaro 2025.