Zoznam všetkých cieľov

Prednášky

1. týždeň: Úvod

  1. Získať predstavu o paradigmách programovania a podstate funkcionálneho programovania.
  2. Dozvedieť sa základné informácie o použití a histórii funkcionálneho programovania.
  3. Získať základné informácie o jazyku Haskell a jeho použití.

2. týždeň: Zoznamy

  1. Zoznámiť sa s metódami práce s zoznamami v jazyku Haskell.
  2. Pochopiť koncepciu funkcie vyššieho rádu a jej použitie pri práci s zoznamami.

3. týždeň: Funkcie a vyhodnocovanie

  1. Porozumieť základným pojmom funkcionálneho programovania.
  2. Pochopiť princípy definície a vyhodnotenia funkcií.

4. týždeň: Štruktúry údajov

  1. Pochopiť koncepciu algebraických dátových typov (ADT) a ich definície.
  2. Pochopiť použitie porovnávania vzorov pre prácu s vlastnými typmi.
  3. Porovnať ADT s možnosťami poskytovanými v iných jazykoch.
  4. Pochopiť princíp parametrického polymorfizmu.
  5. Zoznámiť sa s príkladmi rekurzívnych dátových typov.

5. týždeň: Typové triedy a polymorfizmus

  1. Zoznámiť sa s druhmi polymorfizmu v programovacích jazykoch.
  2. Pochopiť princíp fungovania a použitia typových tried v jazyku Haskell.
  3. Porovnať typové triedy s inými realizáciami polymorfizmu.

6. týždeň: Vstup, výstup a monády

  1. Naučiť sa realizovať vstupné a výstupné operácie.
  2. Pochopiť koncepciu monád a jej využitie.

7. týždeň: Jazyk Lambda

  1. Pochopiť syntax a sémantiku kalkulu lambda.
  2. Pochopiť význam kalkulu lambda pre funkcionálne programovanie.

8. týždeň: Návrh funkcionálnych programov

  1. Oboznámiť sa so spôsobom definície modulov v jazyku Haskell.
  2. Na príklade sa oboznámiť s niektorými princípmi návrhu funkcionálnych programov.

9. týždeň: Funkcionálne programovanie v Jave

  1. Zoznamiť sa s možnosťami využitia funkcionálneho programovania v jazyku Java.
  2. Naučiť sa pracovať s prúdmi (streams) v jazyku Java.

10. týždeň: Jazyk Clojure

  1. Zoznámiť sa s funkcionálnym programovaním v jednom z jazykoch z rodiny LISP — Clojure.

11. týždeň: Monády na príkladoch

  1. Pochopiť koncepciu monád na niekoľkých príkladoch.

12. týždeň: Funkcionálne programovanie a JavaScript

  1. Zoznámiť sa s príkladmi použitia princípov funkcionálneho programovania v jazyku JavaScript.

Cvičenia

1. týždeň: Úvod do jazyka Haskell

  1. Naučiť sa používať interaktívny interpretátor GHCi.
  2. Naučiť sa definovať vlastné funkcie a používať ich.
  3. Oboznámiť sa s koncepciou typov v jazyku Haskell.

2. týždeň: Zoznamy

  1. Precvičiť používanie porovnávania vzorov (pattern matching)
  2. Precvičiť prácu s funkciami vyššieho rádu pre prácu s zoznamami.
  3. Naučiť sa používať množinové abstrakcie (list comprehension).

3. týždeň: Zoznamy — úloha

  1. Vyskúšať vyriešenie väčšej úlohy.

4. týždeň: Dátové typy

  1. Vyskúšať prácu s vlastnou dátovou štruktúrou.
  2. Naučiť sa definovať vlastné algebraické údajové typy a funkcie na prácu s nimi.
  3. Pochopiť význam typových parametrov.

5. týždeň: Typové triedy

  1. Pochopiť význam typových tried a ich použitia.
  2. Naučiť sa definovať vlastné inštancie typových tried.
  3. Naučiť sa definovať vlastné typové triedy.

7. týždeň: Vstup, výstup a monády

  1. Naučiť sa vytvárať vykonateľné programy.
  2. Oboznámiť sa s operáciami pre vstup a výstup.
  3. Oboznámiť sa s konceptom monád.

10. týždeň: Moduly a balíky

  1. Naučiť sa používať Cabal na definovanie projektov.
  2. Naučiť sa použivať moduly.
  3. Naučiť sa používať externé knižnice.
  4. Naučiť sa pracovať s realistickými údajovými štruktúrami.
  5. Vyskúšať použitie monád na prácu s I/O a ošetrenie chýb.

11. týždeň: Funkcionálne programovanie v Jave

  1. Zoznámiť sa s možnosťami použitia funkcionálneho prístupu v jazyku Java.

Zadania