Organisace a pravidla absolvování
ZMĚNA: druhý úkol byl letos zrušen.
TL;DR: Je potřeba udělat dvě domácí úlohy s peer review a k tomu 5/7 cvikových miniúloh s neomezeným odevzdáváním do konce května.
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 „cvikopřednášek“ v B130 s týdenní periodicitou. První část je obvykle přednáškovitější, druhá spíše samostatné programování. Přítomnost na semináři není povinná; je na zvážení každého, zda zvládne splnit podmínky čistě na základě samostudia.
Kurs probíhá presenčně, k disposici máte ale pro případ nutnosti také předtočené přednášky z předcházejících běhů předmětu. Jen mějte na paměti, že jak se seminář vyvíjí, může se obsah cvik mírně odchýlit od předtočené verse. Také samozřejmě ignorujte organisační pokyny ve videích – týkají se starého semestru.
Studijní materiály jsou naplněny loňskými versemi slajdů; před samotným cvikem se mohou mírně měnit.
Ú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čnou zpětnou vazbu svým kolegům.
Miniúlohy
Tyto drobné úložky (či spíše příklady) slouží k vyzkoušení/procvičení obsahu jedné přednášky a slouží vlastně jako automatické testy pro práci na cviku.
- 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ětna.
- Rozsah a náročnost: Přibližně kolem hodiny (při úplném pochopení přednášky tak 15 minut).
- 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ě. Předpokládá se, že tyto úlohy budeme řešit rovnou na cviku a zpětnou vazbu dostanete tamtéž.
- Bodování: Binární (0 nebo 1); zadává vyučující po kontrole.
- Zveřejnění: Studentská ani vzorová ř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: Vepisování komentářů přímo do kódu.
- Odevzdání: Týden po konci odevzdávání.
- 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í (přijato/nepřijato); 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.