PředmětyPředměty(verze: 978)
Předmět, akademický rok 2025/2026
   Přihlásit přes CAS
   
Programování v Haskellu - NPRG068
Anglický název: Programming in Haskell
Zajišťuje: Katedra softwarového inženýrství (32-KSI)
Fakulta: Matematicko-fyzikální fakulta
Platnost: od 2025
Semestr: letní
E-Kredity: 3
Rozsah, examinace: letní s.:2/0, Zk [HT]
Počet míst: neomezen
Minimální obsazenost: neomezen
4EU+: ne
Virtuální mobilita / počet míst pro virtuální mobilitu: ne
Stav předmětu: vyučován
Jazyk výuky: čeština
Způsob výuky: prezenční
Další informace: https://teaching.mff.cuni.cz/nprg068-web/
Garant: RNDr. Miroslav Kratochvíl, Ph.D.
Vyučující: RNDr. Miroslav Kratochvíl, Ph.D.
Třída: Informatika Bc.
Kategorizace předmětu: Informatika > Informatika, Aplikační software, Počítačová grafika a geometrie, Databázové systémy, Didaktika informatiky, Diskrétní matematika, Předměty širšího základu, Předměty obecného základu, Počítačová a formální lingvistika, Optimalizace, Programování, Softwarové inženýrství, Teoretická informatika
Anotace -
Programování v Haskellu zaměřené na řešení praktických problémů -- run-time systém, standardní knihovna, užitečné nástroje.
Poslední úprava: Kopecký Michal, RNDr., Ph.D. (04.06.2018)
Cíl předmětu -

Cílem je naučit se efektivně programovat užitečný a prakticky použitelný software v Haskellu. Součástí předmětu je přehled nejpopulárnějších knihoven a efektivních řešení složitých problémů pomocí funkcionálního programování.

Poslední úprava: Kratochvíl Miroslav, RNDr., Ph.D. (06.01.2026)
Podmínky zakončení předmětu -

Studenti v průběhu semestru vyřeší 3 domácí úkoly; cílem úkolů je implementace jednoduchého zadání jako samostatného programu. Očekávaný rozsah dostatečného řešení každého programu je méně než 500 řádek kódu, očekávaný čas mezi zadáním a termínem odevzdání každého úkolu je 3-4 týdny.

Zkouška bude probíhat ústně, formou krátké diskuze odevzdaných řešení. Studenti na zkoušce prokazují znalost konceptů použitých v řešeních jejich domácích úkolů, případně slovně doplní nedostatky. Vzhledem k formě a cílům zkoušky není použití vlastních materiálů nebo elektroniky povoleno. Témata zkoušky jsou plně pokryta materiály z přednášky poskytnutými na webu.

Nutné podmínky k zakončení:

1. Studenti musí odevzdat všechny domácí úkoly v termínu, v rozsahu alespoň minimálního vyřešení (konkrétní specifikace minimálního a doporučeného rozsahu řešení budou oznámeny při zadání domácích úkolů v průběhu semestru).

2. Studenti musí prokázat znalost a pochopení svých odevzdaných řešení u zkoušky; v případě nedostatečného rozsahu řešení musí prokázat schopnost samostatně doplnit úkol do doporučeného rozsahu.

Výsledná známka je odvozená z kvality a rozsahu řešení domácích úkolů (případně doplněných u zkoušky). Včasné odevzdání všech řešení v doporučeném rozsahu zpravidla odpovídá známce 1.

Poslední úprava: Kratochvíl Miroslav, RNDr., Ph.D. (09.01.2026)
Literatura -

1. Bryan O'Sullivan, Don Stewart, and John Goerzen: Real World Haskell - Code You Can Believe In. O'Reilly, November 2008, ISBN-10: 0596514980, ISBN-13: 978-0596514983. http://book.realworldhaskell.org/read/

2. Learn You A Haskell For Great Good (community version). https://learnyouahaskell.github.io/

Poslední úprava: Kratochvíl Miroslav, RNDr., Ph.D. (06.01.2026)
Sylabus -
  • Typový systém Haskellu, typové třídy, Hindley-Milnerův systém, Systém Fc
  • Monády, State, Monádové transformery
  • Přehled vnitřního fungování Haskellových programů v GHC: Core, STG, thunky, WHNF, seq, kompilace, modularizace
  • Cabal
  • Standardní knihovna pro IO
  • Standardní typové třídy
  • Standardní kontejnery, Text a ByteString
  • Spojení s UNIXem, optparse
  • Parsovací kombinátory, parsec
  • Pretty printing
  • Paralelizace, STM, paralelní frameworky
  • Serverové aplikace -- Scotty, Yesod, Servant
  • Lens-ová knihovna, Prism, Iso, Traversal
  • Přehled některých líných datových struktur: Finger-konstrukce, lazy fronty, ...
  • Jednoduchý grafický výstup: Gloss, JuicyPixels
  • Testování: HSpec, Quickcheck, Criterion

Poslední úprava: Kratochvíl Miroslav, RNDr., Ph.D. (06.01.2026)
 
Univerzita Karlova | Informační systém UK