Zoznam všetkých cieľov
Prednášky
- Získať predstavu o paradigmách programovania a podstate funkcionálneho programovania.
- Dozvedieť sa základné informácie o použití a histórii funkcionálneho programovania.
- Získať základné informácie o jazyku Haskell a jeho použití.
- Zoznámiť sa s metódami práce s zoznamami v jazyku Haskell.
- Pochopiť koncepciu funkcie vyššieho rádu a jej použitie pri práci s zoznamami.
- Porozumieť základným pojmom funkcionálneho programovania.
- Pochopiť princípy definície a vyhodnotenia funkcií.
- Pochopiť koncepciu algebraických dátových typov (ADT) a ich definície.
- Pochopiť použitie porovnávania vzorov pre prácu s vlastnými typmi.
- Porovnať ADT s možnosťami poskytovanými v iných jazykoch.
- Pochopiť princíp parametrického polymorfizmu.
- Zoznámiť sa s príkladmi rekurzívnych dátových typov.
- Zoznámiť sa s druhmi polymorfizmu v programovacích jazykoch.
- Pochopiť princíp fungovania a použitia typových tried v jazyku Haskell.
- Porovnať typové triedy s inými realizáciami polymorfizmu.
- Naučiť sa realizovať vstupné a výstupné operácie.
- Pochopiť koncepciu monád a jej využitie.
- Pochopiť syntax a sémantiku kalkulu lambda.
- Pochopiť význam kalkulu lambda pre funkcionálne programovanie.
- Oboznámiť sa so spôsobom definície modulov v jazyku Haskell.
- Na príklade sa oboznámiť s niektorými princípmi návrhu funkcionálnych programov.
- Zoznamiť sa s možnosťami využitia funkcionálneho programovania v jazyku Java.
- Naučiť sa pracovať s prúdmi (streams) v jazyku Java.
- Zoznámiť sa s funkcionálnym programovaním v jednom z jazykoch z rodiny LISP — Clojure.
- Pochopiť koncepciu monád na niekoľkých príkladoch.
- Zoznámiť sa s príkladmi použitia princípov funkcionálneho programovania v jazyku JavaScript.
Cvičenia
- Naučiť sa používať interaktívny interpretátor GHCi.
- Naučiť sa definovať vlastné funkcie a používať ich.
- Oboznámiť sa s koncepciou typov v jazyku Haskell.
- Precvičiť používanie porovnávania vzorov (pattern matching)
- Precvičiť prácu s funkciami vyššieho rádu pre prácu s zoznamami.
- Naučiť sa používať množinové abstrakcie (list comprehension).
- Vyskúšať vyriešenie väčšej úlohy.
- Vyskúšať prácu s vlastnou dátovou štruktúrou.
- Naučiť sa definovať vlastné algebraické údajové typy a funkcie na prácu s nimi.
- Pochopiť význam typových parametrov.
- Pochopiť význam typových tried a ich použitia.
- Naučiť sa definovať vlastné inštancie typových tried.
- Naučiť sa definovať vlastné typové triedy.
- Naučiť sa vytvárať vykonateľné programy.
- Oboznámiť sa s operáciami pre vstup a výstup.
- Oboznámiť sa s konceptom monád.
- Naučiť sa používať Cabal na definovanie projektov.
- Naučiť sa použivať moduly.
- Naučiť sa používať externé knižnice.
- Naučiť sa pracovať s realistickými údajovými štruktúrami.
- Vyskúšať použitie monád na prácu s I/O a ošetrenie chýb.
- Zoznámiť sa s možnosťami použitia funkcionálneho prístupu v jazyku Java.
Zadania