Máte zapnutý náhled celé osnovy, zpět na běžné zobrazení.
Načítání a prohlížení osnovy může být v závislosti na množství obsahu pomalejší.
Organizace a pravidla absolvování
Organizace kurzu
Tento kurz se zabývá programováním ve funkcionálním jazyce Haskell, především z praktického hlediska. Kurz původně vznikl na podnět Pavla Dvořáka a pořád je z velké části založen na něm připravených materiálech. Za inspiraci a materiály z předešlých let děkujeme také Matejovi Kollárovi a Petrovi Pilařovi.
Kurz je organizován jako série dvouhodinových cvičení s týdenní periodicitou. Cvičení nejsou povinná. Je na zvážení každého, zda dokáže splnit podmínky absolvování kurzu. Očekáváme ale, že si kurz zapíšou zejména studenti se zájmem o probíranou problematiku ;-).
Podmínky úspěšného absolvování kurzu
- V průběhu semestru bude zadáno pět domácích úloh, za které lze získat celkem 100 bodů. Pro udělení zápočtu je nutno dosáhnout alespoň 50 bodů.
- Samostatně vypracovanou úlohu je potřeba vždy odevzdat do dvou týdnů od zadání úlohy do příslušné odevzdávárny v informačním systému. V případě, že úkol do odevzdávárny nestihnete nahrát včas, můžete ho poslat cvičícímu e-mailem. Toto pozdní odevzdání bude ovšem penalizováno −5 body za každý den zpoždění. (Za úlohu nelze získat záporný počet bodů.)
- Vypracované úlohy budou hodnoceny nejenom z pohledu funkčnosti, ale i z pohledu implementační elegance – za velmi pěkné řešení můžete obdržet i nějaký bod navíc, nečitelné a těžkopádné řešení vás může stát i polovinu bodů. Taktéž například exponenciální implementace funkce implementovatelné lineárně nebude hodnocena kladně, snažte se tedy řešit problémy i efektivně.
- Kód bude muset splňovat požadavky na styl jenž bude ověřován programem HLint. Za nesplnění tohoto požadavku bude počet bodů upraven funkcí flip div 4 . (3*). Dále bude zdrojový kód kompilovaný s přepínačem -Wall. Ani zde by neměly být vypsané žádné další varování. Kód musí být kompilovatelný na stanicích nymfeXX.fi.muni.cz pomocí lokálně instalovaného ghc-7.10.3 (jinak bude počet bodů upraven funkcí const 0).
- Jak rozchodit HLint, nastavit pravidla pro kontrolu a další technické záležitosti najdete v tomto dokumentu.
Materiály z cvičení
Upozornění: Slidy budeme postupně aktualizovat, stáhněte si před cvičením aktuální verzi.
Cvičení 1
Cvičení 2
- Poznámka: Na studentském servru aisa je GHC-7.10 dostupné pouze v modulu (stačí spustit
module add ghc-8.0.2
).
Cvičení 3
Cvičení 4
Cvičení 5
Cvičení 6
Cvičení 7
Cvičení 8
Cvičení 9
Cvičení 10
Cvičení 11
Cvičení 12
Závěr semestru
Dodatečné materály
ST výpočty se stavy
cvičení z roku 2015, nebude přednášenoDomácí úkol 1
Popis: Vaším úkolem je implementovat sadu jednoduchých šifer. Zadání je formou dokumentace požadovaných funkcí vygenerované systémem Haddock.
Termín odevzdání: 12. 3. 2016 23:59
Formát odevzdání: Odevzdejte jeden soubor Ciphers.hs, který vznikne doimplementováním požadovaných funkcí do poskytnuté kostry modulu.
Zadání
Vzorové řešení
Domácí úkol 2
Popis: Vaším úkolem je naprogramovat sadu funkcí pro manipulaci s deterministickými konečnými automaty. Zadání je formou dokumentace požadovaných funkcí vygenerované systémem Haddock.
Termín odevzdání: 26. 3. 2016 23:59
Formát odevzdání: Odevzdejte jeden soubor Automata.hs, který vznikne doimplementováním požadovaných funkcí do poskytnuté kostry modulu.
Zadání
Vzorové řešení
Domácí úkol 3
Popis: Vaším úkolem je implementovat zjednodušenou verzi linuxového prográmku du. Vytvořte ucelený, samostatný, po skompilovaní spustitelný modul. Zadání je formou dokumentace požadovaného chování vygenerované systémem Haddock.
Termín odevzdání: 9. 4. 2016 23:59
Formát odevzdání: Odevzdejte jeden soubor Du.hs, který vznikne doimplementováním požadovaných funkcí do poskytnuté kostry modulu. Dokumentace interních funkcí je velice vítána.
Zadání
Vzorové řešení
Domácí úkol 4
Popis: Vaším úkolem je implementovat několik funkcí do programu pro komunikaci se síťovým API služby OpenWeatherMap.prg. Zadání je formou dokumentace požadovaného chování vygenerované systémem Haddock.
Termín odevzdání: 23. 4. 2016 23:59
Formát odevzdání: Odevzdejte jeden soubor Weather.hs, který vznikne doimplementováním požadovaných funkcí do poskytnuté kostry modulu. Dokumentace interních funkcí je velice vítána.
Zadání
Vzorové řešení
Domácí úkol 5
Popis: Vaším úkolem je implementovat parser zdrojového kódu jazyka Prolog podle zadané specifikace. Použijte kombinátorovou parsovací knihovnu Parsec. Zadání je formou dokumentace požadovaného chování vygenerované systémem Haddock.
Termín odevzdání: 14. 5. 2016 23:59
Formát odevzdání: Odevzdejte jeden soubor Prolog.hs, který vznikne doimplementováním požadovaných funkcí do poskytnuté kostry modulu. Dokumentace interních funkcí je velice vítána.