IB016 Seminář z funkcionálního programování
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 částečně založen na jeho 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 (první polovina je obvykle přednáškoidnější, druhá je víc samostatné programování). 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 budou zadány čtyři domácí úlohy, za které lze získat celkem 52 bodů.
- Pro udělení zápočtu je nutno dosáhnout alespoň 32 bodů.
- Každá úloha má programovací část (2 týdny, 10 bodů) a peer-review část (1 týden, 3 body). Pro uznání bodů za daný úkol je nutné mít z obou částí alespoň 1 bod (jinak je úkol hodnocen 0 body).
- Vypracované řešení (obou částí) se odevzdává do příslušné odevzdávárny v informačním systému. Po uplynutí doby odevzdávání bude zveřejněné možné vzorové řešení a všechna studentská řešení (pouze pro zapsané studenty).
- Programovací část úlohy je hodnocena hlavně z pohledu funkčnosti, ale zřetel bude brán i na složitost řešení a implementační eleganci. Za velmi pěkné řešení můžete obdržet i nějaký bod navíc; naopak nečitelné, těžkopádné řešení či řešení s nevhodnou složitostí vás může stát i polovinu bodů.
- Kód musí být kompilovatelný na serveru aisa.fi.muni.cz pomocí ghc-8.0.2 dostupného jako modul (importujte pomocí module add ghc).
- Vypracovaná programovací část bude kontrolována programem HLint a kompilovaná s přepínačem -Wall. Ani v jednom případě by neměla být vypsaná žádná varování. Můžete se rozhodnout některá doporučení nedodržet, v takovém případě svoje důvody stručně popište do hlavičky odevzdaného souboru.
- V rámci peer-review části je vaším úkolem pochopit a otestovat řešení dvou dalších studentů dle přidělení od nás. Na základě toho jim napíšete zpětnou vazbu k jejich implementaci. Ta musí obsahovat alespoň následující 3 odstavce textu/odrážek:
- Co nefunguje? (Pro které případy se řešení nechová správně a proč?)
- Co se vám líbí? (Které myšlenky řešení nebo části kódu se vám zdají elegantní či nadprůměrně dobré a proč?)
- Co byste udělali jinak? (Které myšlenky nebo části kódu se vám zdají matoucí, nevhodné, nebo byste je udělali jinak z jiného důvodu?)
- Po skončení peer-review části bude všechna zpětná vazba (včetně té od nás) zveřejněna (opět jen pro zapsané studenty).