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. Je organizován jako série dvouhodinových cvičení s týdenní periodicitou (první polovina je obvykle přednáškovitě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 bude zadáno pět domácích úloh, za které lze získat celkem 65 bodů.
  • Pro udělení zápočtu je nutno dosáhnout alespoň 42 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á implementace každého úkolu 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 přeložitelný na serveru aisa.fi.muni.cz pomocí ghc-8.6.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 části peer review je vaším úkolem pochopit a otestovat řešení dvou dalších studentů dle přidělení informačním systémem. 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í části peer review bude všechna zpětná vazba (včetně té od nás) zveřejněna (opět jen pro zapsané studenty).