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

Fakulta informatiky
jaro 2010
Rozsah
0/2. 2 kr. (plus ukončení). Ukončení: z.
Vyučující
RNDr. Libor Škarvada (cvičící)
Ing. Mgr. Pavel Mises (cvičící)
Peter Molnár (cvičící)
Garance
prof. RNDr. Mojmír Křetínský, CSc.
Katedra teorie programování – Fakulta informatiky
Kontaktní osoba: RNDr. Libor Škarvada
Rozvrh
Út 16:00–17:50 B130
Předpoklady
IB015 Úvod do funkc. programování && SOUHLAS
Pro povolení zápisu do kurzu stačí mít znalost v rozsahu předmětu IB015 Neimperativní programování a kladný vztah k funkcionálnímu programování. Do žádosti o souhlas stručně zmiňte své dosavadní zkušenosti s Haskellem a případně s dalšími funkcionálními jazyky.
Omezení zápisu do předmětu
Předmět je nabízen i studentům mimo mateřské obory.
Mateřské obory/plány
předmět má 20 mateřských oborů, zobrazit
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.
Osnova
  • GHC(i), další zajímavé nástroje a projekty v Haskellu (lambdabot, hackage, darcs, cabal...). Příkazy interpretu, kompilace programů v Haskellu.
  • Větvení programů (vzory, stráže, if, case), rekurze, anonymní funkce, funkce vyšších řádů (mapy, filtry, foldy), operátory skládání a aplikace funkce.
  • Moduly a typové třídy: ukázka důležitých modulů v Haskellu 98, import, psaní vlastních modulů, strukturování kódu. Show, read, číselné typy, porovnávání.
  • Datové struktury: asociační seznamy, záznamy, pole, implementace vlastních datových struktur (např. stromů).
  • Vstup a výstup: práce se soubory, systémové programování, líný a striktní IO, bezpečný (safe) IO.
  • Monády: Maybe/Either, stavové monády, programování s monádami.
  • Zpracování chyb a výjimek: odchytávání a nastavování výjimek, ošetření chybových stavů.
  • Testování, optimalizace, dokumentace: QuickCheck, pokrytí kódu, profilování, prostá rekurze, přidávání striktnosti, dokumentované programování a generování dokumentace.
  • Parsování: regulární výrazy, ParSec.
  • Databáze: rozhraní HDBC, SQL.
  • Webové a síťové služby: programování webových aplikací pomocí frameworků, používání síťových protokolů.
  • GUI (nebo práce s multimédii): gtk2hs/zpracování obrázků.
  • Paralelní programování: vlákna, paralelní programování a strategie.
Literatura
  • 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.
Metody hodnocení
Podmínkou pro získání zápočtu je získání minimálně 50 % bodů z domácích úloh. Účast na cvičeních je povinná a velké množství absencí může negativně ovlivnit výsledný bodový zisk.
Navazující předměty
Informace učitele
http://vyuka.haskell.cz/
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 2011, jaro 2012, jaro 2013, jaro 2015, jaro 2016, jaro 2017, jaro 2018, jaro 2019, jaro 2020, jaro 2021, jaro 2022, jaro 2023, jaro 2024, jaro 2025.