Neimperativní programování

Organizační pokyny


Organizace výuky Přednáška

Přednáška probíhá 2x týdně v časech stanovených rozvrhem FI MU. Obsah obou přednášek konaných v rámci jednoho týdne je identický, tudíž je v pořádku navštívit v rámci daného týdne přednášku pouze jednou. Přednáška je nahrávána, nahrávky budou zpřístupněny studentům kurzu.


Organizace výuky Cvičení

Pro účely organizace cvičení jsou studenti kurzu rozdělení do skupin, číslo své skupiny naleznete v IS MU. Cvičení se konají dle rozvrhu FI, a to tak, že každá skupina má cvičení vždy jednou za 14 dní, výjimkou je první týden semestru, viz níže.


POZOR: První týden mají cvičení všichni studenti, cvičení jsou však zkrácena na jednu vyučovací hodinu. Studenti ze skupin se sudým (párnym) číslem dle IS MU začínají v příslušném čase podle rozvrhu, skupiny s lichým (nepárnym) číslem začínají o jednu vyučovací hodinu později. Druhý týden semestru mají normálně cvičení skupiny s lichým číslem, třetí týden pak skupiny se sudým číslem, atd.

Skupina s nejvyšším číslem je pouze fiktivní, určená studentům, kteří nechtějí na cvičení chodit.


Hodnocení předmětu

Hodnocení předmětu bude u každého studenta stanoveno na základě jím vypracovaných domácích úloh a bodového zisku ze závěrečné písemné zkoušky. Celkem bude zadáno 12 domácích úloh, za které bude možné získat celkem 15 bodů, 9 úloh bude zadáno formou odpovědníků v ISu (po 1 bodu každá), 3 úlohy budou implementačního charakteru (každá úloha za 2 body). Závěrečná zkouška bude písemná, bez možnosti použití počítače, zejména GHCi interpretu. Písemka se bude skládat ze dvou částí. První část, tzv. povinný test minimálních znalostí, bude tvořen úkoly/příklady, o nichž se předpokládá, že je úspěšný absolvent kurzu vyřeší zcela správně (bude prominuta nejvýše jedna drobná chyba). Proto tato část písemky nebude bodována, ale bude hodnocena jako Splněno/Nesplněno. V druhé části písemky pak bude možné získat až 10 bodů za správné řešení zadaných příkladů. Obsahem závěrečné písemné zkoušky budou pouze znalosti související s funkcionálním programovacím paradigmatem a programovacím jazykem Haskell (prvních 9 přednášek, témata probíraná v následujících 3 přednáškách (Prolog a CLP) nebudou předmětem zkoušky). Na písemnou zkoušku je třeba se přihlásit skrze IS MU. Termíny konání zkoušek je možné nalézt tamtéž.

Pro úspěšné složení předmětu bude nutné splnit všechny následující podmínky:
  • test minimálních znalostí hodnocen jako "Splněno",
  • za řešení domácích úloh získáno alespoň 8 bodů.

V případě splnění obou podmínek bude stanovena známka dle celkového počtu studentem získaných bodů z domácích úloh a druhé části písemky, a to následovně:

  • [00,10) bodů = známka F
  • [10,12) bodů = známka E
  • [12,14) bodů = známka D
  • [14,17) bodů = známka C
  • [17,20) bodů = známka B
  • [20,25] bodů = známka A

V případě získání méně než 8 bodů z domácích úloh bude uděleno hodnocení X. Při tomto hodnocení není možné absolvovat závěrečnou písemku.

V případě nesplnění první části zkoušky bude uděleno hodnocení F bez ohledu na bodový zisk z druhé části písemky.

Při získání 12 a více bodů z DÚ bude po ukončení zkouškového období smazáno jedno hodnocení F z tohoto předmětu (tj. jeden neúspěšný pokus na Splněno/Nesplněno bude prominut) v případě, že se v hodnocení předmětu F u dotyčné osoby vyskytuje.


Používaný software

Všechny používané nástroje jsou již nainstalovány v učebně. Jestli chcete na cvičení používat vlastní notebook, zprovozněte si prosím níže uvedené nástroje ještě před prvním cvičením.

Případné problémy s instalací můžete psát do diskusního fóra.

Standardem pro tento semestr je překladač Glasgow Haskell Compiler (GHC) verze 8.0 nebo vyšší (doporučujeme instalovat nejnovější dostupný pro váš systém).

  • Linux: Pokud je ghc verze nejméně 8.0 k dispozici v repozitářích vaší distribuce, instalujte přímo z repozitáře.
  • Windows, Mac OS X: Stáhněte GHC ze .
V případě, že používáte GHC na studentském serveru aisa.fi.muni.cz, standardně se spouští stará verze 7.6.3. Novou verzi povolíte příkazem module add ghc. Modul je nutné přidávat při každém přihlášení, příp. zanést do vašeho .bashrc.

Domácí úlohy

  • Každý týden bude zadán domácí úkol, za který bude možné získat 1-2 body.
  • Domácí úkoly vypracovávejte samostatně. Spolupráce vícero lidí je zakázána. Viz disciplinární řád FI MU.
  • Pokud přebíráte v řešení kód z jiného zdroje (internetový tutoriál, fórum, kniha, …), nezapomeňte příslušnou část kódu označit a uvést zdroj (vydáváte-li ji za svou vlastní práci, dopouštíte se plagiátorství a tím se vystavujete riziku disciplinárního stíhání).
  • Většinou budou úlohy realizované formou odpovědníku, třikrát v průběhu semestru bude zadána větší úloha k odevzdání přes odevzdávárnu. V obou případech bude úkol odkazován z interaktivní osnovy.
  • Ve všech případech bude úloha/odpovědník dostupný hned v úterý po přednášce a čas na vypracování úlohy bude končit ve středu tři týdny po zadání, abyste měli dostatek času absolvovat svá cvičení a látku si procvičit.
  • Při vypracovávání domácích úkolů můžete používat interpret jazyka Haskell.
  • Odpovědníky je možné zodpovědět pouze jednou (není-li u konkrétního úkolu uvedeno jinak), s časovým limitem 3 hodiny, a prohlídka odpovědníků je možná až po ukončení období pro odevzdávání. Spadne-li vám připojení v průběhu odpovídání, odpovědník je možné otevírat znovu, dokud neuplynou 3 hodiny od prvního otevření.
  • Odpovědníky budou mít více podúloh, každá bude hodnocena samostatně desetinami bodu.

Úlohy typu naprogramujte funkci

  • Součástí odpovědníků budou i úlohy typu naprogramujte funkci, v těchto případech se jedná o automaticky opravované úlohy.
  • Textové pole v ISu podporuje syntaktickou kontrolu (vyžaduje JavaScript): pod odpovídacím polem byste měli vidět tlačítko pro kontrolu syntaxe. Kontrola syntaxe kontaktuje externí server, a tedy může mít zpoždění v řádu sekund. I přes kontrolu syntaxe je však silně doporučeno řešení vyzkoušet v interpretu, testy běží až po odevzdání.
  • Pokud není v otázce řečeno jinak, můžete si definovat libovolně mnoho pomocných funkcí. Není-li uvedeno jinak, předpokládejte načtenou standardní knihovnu, vyhněte se proto jménům funkcí, která by vytvářela kolize (v případě pochybností si to odzkoušejte v interpretru, nebo kontrolou syntaxe).
  • V případě špatné odpovědi se v prohlídce odpovědníku dozvíte, co bylo špatně (nešlo zkompilovat, typová chyba, liší se výstup od očekávaného, …). Pokud se jedná o výstup rozdílný od vzorového řešení, naleznete ve výstupu nejprve několik řádků s konkrétními vstupy a na posledním řádku pak konkrétní (lišící se) výstupy. Někdy však netestujeme přímo vaši funkci, ale používáme pomocnou funkci, proto výstupy nemusí úplně sedět; budeme se však snažit zachovat čitelnost.
  • Mějte, prosím, trpělivost s ISem, vyhodnocování úloh není okamžité (řádově sekundy na úlohu) a pokud se sejde více úloh v jeden okamžik, tak se úlohy vyhodnocují postupně. Vyhodnocování probíhá i při otevírání prohlídky, takže i to bude mít zpoždění.
  • Vyhodnocování úloh je časově omezené. Limity by měly být nastaveny tak aby nevyžadovaly optimální řešení, ale snažte se aby vaše řešení nebylo příliš neoptimální. Například pokud jde úlohu vyřešit snadno v lineárním čase a vaše řešení bude v exponenciálním čase, a kvůli tomu neprojde přes timeout, nemusíte dostat body.
  • Pokud narazíte na nějaký problém s touto službou – například když u odpovědi máte, že server neodpovídá, nebo si myslíte, že jsme neuznali správné řešení (které vám v interpretu funguje!), napište do diskusního fóra nebo kontaktujte správce externí služby, kterým je Vladimír Štill.