Organisace a pravidla absolvování
TL;DR: Je potřeba udělat dvě domácí úlohy s peer review a k tomu 5/7 miniúloh s neomezeným odevzdáváním do konce května (které ale můžete stihnout i na cvičení).
Organisace kursu
Tento kurs se zabývá programováním ve funkcionálním jazyce Haskell, a to především z praktického hlediska. Je organisová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í a řešení miniúlohy. Cvičení nejsou povinná. Je na zvážení každého, zda dokáže splnit podmínky absolvování kursu. Očekáváme ale, že si kurs zapíšou zejména studenti se zájmem o probíranou problematiku :-).
Úlohy a bodování
Během semestru budou zadávány dva typy úloh, které se budou lišit rozsahem, bodováním i způsobem hodnocení. Navíc k větším úlohám budete psát stručné peer review.
Miniúlohy
Tyto drobné úložky (či spíše příklady) slouží k vyzkoušení/procvičení obsahu jednoho cvičení.
- Počet: 7 za semestr (tj. ne každé cvičení bude mít přiřazenu miniúlohu).
- Forma: Odpovědník s jedním až třemi políčky pro implementaci funkce/instance/výrazu.
- Odevzdání: Neomezeně mnohokrát a kdykoli do konce
květnasrpna. - Rozsah a náročnost: Měly by být bez potíží zvládnutelné během cvičení.
- Další požadavky: Typicky budou předepsány techniky ze cvičení, jimiž se má úkol řešit.
- Kontrola: Odpovědníky jsou navázány na automatické testy, jejichž výsledky máte k disposici. Po úspěšných testech řešení zkontroluje ještě vyučující, zda používá předepsané techniky, a případně může dát drobnou zpětnou vazbu. Kontrola vyučujícím bude probíhat pravidelně (upřesníme). Doporučujeme řešit úlohy včas a pravidelně, aby je vyučující stíhali kontrolovat průběžně (= rychle) a vy jste v případě potřeby měli čas opravit chyby.
- Bodování: Binární (0 nebo 1); zadává vyučující po kontrole.
- Zveřejnění: Studentská řešení nejsou veřejná.
Větší domácí úlohy
Tyto úkoly slouží k tomu, abyste si vyzkoušeli napsat delší kód v Haskellu.
- Počet: 2 za semestr (ve 3. a 8. týdnu).
- Forma: Jeden soubor vložený do odevzdávárny.
- Odevzdání: Neomezeně mnohokrát, do tří týdnů od zadání.
- Rozsah a náročnost: Přibližně 300 řádků kódu, práce na jednotky hodin (nejvýše víkend :-)).
- Další požadavky: Kód by měl být přeložitelný s přepínačem -Wall bez varování a měl by mít čistý výstup HLintu. Pokud se rozhodnete doporučení HLintu nedodržet, stručně to v komentáři zdůvodněte.
- Kontrola: Soubory v odevzdávárně se pravidelně kontrolují automatickými testy, jejichž výsledky uvidíte v poznámkovém bloku. Po konci odevzdávání kód prohlédne ještě vyučující, který kromě bodů napíše i zpětnou vazbu.
- Bodování: Diskrétní: 0, 1, 3 nebo 4 body podle funkčnosti (primárně), ale také efektivity, elegance a stylu řešení. (Pro zisk jednoho bodu stačí úlohu úplně neodfláknout. :-))
- Zveřejnění: Řešení všech studentů jsou po konci odevzdávání zveřejněna všem studentům předmětu.
Peer review
Kromě psaní kódu je důležité i jeho čtení a pochopení; u větších úloh proto chceme, abyste si kódy navzájem četli a hodnotili.
- Počet: 2×2 za semestr – dvě cizí řešení po skončení každé větší úlohy.
- Forma: Formulář v ISové aplikaci pro vzájemné hodnocení.
- Odevzdání: Týden po konci odevzdávání, do té doby lze libovolně měnit.
- Rozsah: Ke každému řešení alespoň tři odstavce textu či odrážek:
- Co nefunguje (chová se v rozporu se zadáním) a proč?
- Co se vám líbí? (Které myšlenky řešení se vám zdají elegantní či nadprůměrně dobré a proč?)
- Co byste udělali jinak? (Které myšlenky či části kódu se vám zdají matoucí, nevhodné nebo byste je udělali jinak?)
- Kontrola: Vyučující po konci vyplňování ověří, že review má dostatečný rozsah a přínosnost (tj. zda to není odfláknuté :-)).
- Bodování: Binární (0 nebo 1); zadává vyučující po kontrole.
- Zveřejnění: Zpětná vazba od všech hodnotitelů i vyučujícího jsou po konci peer review zveřejněna všem studentům předmětu.
Podmínky získání zápočtu
Pro úspěšné absolvování kursu je zapotřebí splnit následující čtyři podmínky:
- Mít splněno alespoň pět ze sedmi miniúloh.
- Mít obě velké úlohy splněny na nenulový počet bodů.
- Mít za velké úlohy alespoň čtyři body z osmi.
- Poskytnout zpětnou vazbu všem čtyřem cizím řešením.