Neprocedurální programování

Požadavky na zápočet

  1. Domácí úkoly
    • Během semestru dostanete několik domácích úkolů na témata, která budeme probírat na cvičení. Jejich cílem je hlavně to, abyste si zkusili v Prologu a Haskellu něco naprogramovat už během semestru a ne až před zkouškou.
    • Pro získání zápočtu je potřeba mít na konci semestru alespoň 420 bodů z úkolů. Navíc je potřeba mít aspoň 150 bodů z úkolů na Prolog a alespoň 150 bodů z úkolů na Haskell.
    • Úkoly v ReCoDexu: Na každý jazyk dostanete vždy dva malé úkoly po 25 bodech a jeden trochu větší úkol za 50 bodů s termínem do dalších cvičení. Tyto úkoly budou zadané v ReCoDexu.
    • Úkoly v Moodle: Dále dostanete dva složitější úkoly v Moodle po 100 bodech. Termín pro odevzdání úkolu v Moodle je také do dalších cvičení. Následně vám Moodle přidělí 4 úkoly vašich spolužáků k ohodnocení. Úkoly se hodnotí ve třech kritériích - správnost řešení, efektivita řešení a dokumentace/komentáře/pochopitelnost kódu. Nejvyšší váhu (10) má správnost řešení, efektivita má váhu 7 a dokumentace 3. Na ohodnocení máte opět týden. Za úkol samotný můžete získat max. 80 bodů, za ohodnocení úkolů ostatních max. 20 bodů (dohromady za všechny čtyři).
    • Hodnocení spolužáků se nebojte, budu na to dohlížet, a kdybyste někomu dali málo nebo moc bodů, tak to budu korigovat. Cílem hodnocení je hlavně to, abyste viděli i jiná řešení než to vaše a naučili se z nich třeba nové triky.
    • Bonusové úkoly: Během semestru vám navíc zadám v ReCodexu 5 bonusových úkolů na Prolog a 5 na Haskell. Tyto mají sloužit hlavně jako další příklady k procvičení, ale jako motivaci můžete za každý získat 8 bodů. Termín budou mít tyto úkoly nastavený až na konce zkouškového, abyste je mohli využít i jako přípravu na zkoušku (nebo jako způsob, jak dohnat několik chybějících bodů).
    • Úkoly odevzdávejte do ReCoDexu a do Moodle předmětu. Klíč pro zápis vám říkal Tomáš Dvořák na první přednášce a já na prvním cvičení, jestli ho nevíte, ozvěte se.
  2. Zápočtový program v Prologu nebo Haskellu
    • Nápady na vhodná témata můžete najít např. na stránkách Jana Hrice, Tomáše Dvořáka nebo Jiřího Beneše.
    • Téma si vyberte a dohodněte se mnou do konce dubna (může být později, pokud chcete dělat zápočtový program v Haskellu, ale dejte mi vědět včas)
    • Je doporučené mít zápočet hotový ještě před zkouškou. Z reakcí studentů v předchozích letech vím, že až napsání zápočtového programu pro řadu z vás znamená skutečné seznámení se s jazykem.
    • S programem je potřeba odevzdat i rozumnou dokumentaci a testovací data (buď přímo jako testovací dotazy připravené v programu, nebo zvlášť v textovém souboru).
    • Zápočtové programy bude možné předvádět osobně na Malé straně nebo v odůvodněných případech online.

Průběh cvičení

Toto je předběžný plán cvičení podle minulého roku. Je možné (pravděpodobné), že nebude dodržen. Odkazované texty a zdrojové kódy se také pravděpodobně budou mírně měnit.

Zdrojové kódy vytvořené na cvičeních najdete na Githubu.

Datum Téma
21. 2. 2024 Prolog - rodinné vztahy, Zdrojový kód
28. 2. 2024 Prolog - seznamy, Zdrojový kód
6. 3. 2024 Prolog - seznamy II, aritmetika, Zdrojový kód
13. 3. 2024 Prolog - prohledávání, rozdílové seznamy, Zdrojový kód
20. 3. 2024 Prolog - stromy, Zdrojový kód
27. 3. 2024 Prolog - grafy, prohledávání prostoru stavů, Zdrojový kód, Prolog - ..=, řešič SAT, Zdrojový kód
3. 4. 2024 Haskell - typy, základní funkce, Zdrojový kód
10. 4. 2024 Haskell - seznamy, skládání funkcí, Zdrojový kód
17. 4. 2024 Haskell - vlastní typy, Zdrojový kód
24. 4. 2024 Haskell - stromy, obecný fold, Zdrojový kód
1. 5. 2024 Státní svátek
8. 5. 2024 Státní svátek
15. 5. 2024 Haskell - monády, Zdrojový kód
22. 5. 2024 Haskell - State, IO, record syntaxe, zipper, Zdrojový kód