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ň 60 % možných bodů ze všech úkolů. Navíc je potřeba mít aspoň 50 % z úkolů na Prolog a alespoň 50 % z úkolů na Haskell. Na každých druhých cvičeních dostanete úkol, na jeho odevzdání budete mít týden (do začátku dalších cvičení). Po konci těchto cvičení vám systém přidělí úkoly pěti vašich spolužáků, které ohodnotíte. Ú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 můžete získat max. 80 bodů, za ohodnocení úkolů ostatních max. 20 bodů (dohromady za všech pět).
    • 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.
    • Úkoly odevzdávejte 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.
    • 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)
    • Počítejte s tím, že zápočet potřebujete ještě před zkouškou.
    • 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).
    • Programy budete předvádět osobně nejspíš v labu na Malé Straně po domluvě, každopádně mi je napřed včas pošlete mailem, ať se na ně stihnu podívat.

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.

Datum Téma
21. 2. 2020 Prolog - rodinné vztahy, Zdrojový kód
28. 2. 2020 Prolog - seznamy, Zdrojový kód
6. 3. 2020 Prolog - seznamy II, aritmetika, Zdrojový kód
13. 3. 2020 Prolog - prohledávání, rozdílové seznamy, Zdrojový kód
20. 3. 2020 Prolog - stromy, Zdrojový kód
27. 3. 2020 Prolog - grafy, prohledávání prostoru stavů, Zdrojový kód
3. 4. 2020 Haskell - typy, základní funkce, Zdrojový kód
10. 4. 2020 Státní svátek (Velký pátek) - cvičení odpadá
17. 4. 2020 Haskell - seznamy, skládání funkcí, Zdrojový kód
24. 4. 2020 Haskell - vlastní typy, Zdrojový kód
1. 5. 2020 Státní svátek (Svátek práce) - cvičení odpadá
8. 5. 2020 Státní svátek (Den vítězství) - cvičení odpadá
15. 5. 2020 Haskell - stromy, obecný fold, Zdrojový kód
22. 5. 2020 Haskell - monády, Zdrojový kód Haskell - State, IO, record syntaxe, zipper, Zdrojový kód

Bonus

Letos na cvičení pravděpodobně nestihneme ukázat implementaci SAT solveru v Prologu, ale můžete se na ni podívat alespoň tady. Prolog - ..=, řešič SAT, Zdrojový kód