Seznam přednášek
Základní úvod do funkcionálního programování
1. Úvod do kurzu. Úvod do funkcionálního programování. Úvod do programování v jazyku Haskell (pomocí interpretu GHC).
2. Základní definice funkce. Jak psát jednoduché (rekurzivní) funkce v jazyce Haskell. Základní datové typy a jejich použití.
3. Revize definice funkce: využití techniky pattern matching
4. Seznamy a n-tice - základní notace, jak je používat v programech.
5. Práce se seznamy.
6. Funkcí vyššího řádu. Funkce jako hodnota prvního řádu. Funkce map - fold. Generátory seznamů.
7. Uživatelsky definované datové typy a způsob práce s nimi.
8. Rekurzivní datové typy a polymorfismus, částečně vyhodnocené funkce, základní úvod do typových tříd.
Pokročilá témata
9. Teorie důležitá pro čistě funkcionální programování – úvod do lambda kalkulu, výpočet jako přepisování, líné vyhodnocení
10. Programování s akcemi – použití klasických polí a zpracování vedlejších efektů (vstupně výstupní operace).
11. Monády v jazyce Haskell
12. - 13. Funkcionální programování v tradičních jazycích - rozdíly mezi jazykem Haskell a jazyky jako C# nebo Java, reprezentace stavu pomocí monád z Haskellu (LINQ v jazyce C#).
Seznam cvičení (očekává se, že všechna cvičení budou v počítačových učebnách)
1. Interpret GHC - základní použití
2. Implementace základních funkcí pro výpočet např. faktoriálu, sekvence Fibonacciho čísel nebo největšího společného dělitele.
3. Funkce a operátory, které pracují s čísly, řetězci nebo znaky.
4. Implementace složitějších funkcí, které používají techniku pattern matching nebo chráněné výrazy.
5. Implementace funkcí, které pracují se seznamy jako: length, reverse, (++), zip, zipWith.
7. Použití standardních funkcí pracujících se seznamy jako map, fold, concat atd. Generátory seznamů.
8. První programovací test.
9. Definice datového typu pro matematické výrazy. Vyhodnocení těchto výrazů.
10. Definice binárního stromu. Implementace funkcí, které pracují s tímto stromem.
11. Práce se soubory
12. Práce s poli, generátor náhodných čísel - výpočet čísla PI.
13. Druhý programovací test.
Základní úvod do funkcionálního programování
1. Úvod do kurzu. Úvod do funkcionálního programování. Úvod do programování v jazyku Haskell (pomocí interpretu GHC).
2. Základní definice funkce. Jak psát jednoduché (rekurzivní) funkce v jazyce Haskell. Základní datové typy a jejich použití.
3. Revize definice funkce: využití techniky pattern matching
4. Seznamy a n-tice - základní notace, jak je používat v programech.
5. Práce se seznamy.
6. Funkcí vyššího řádu. Funkce jako hodnota prvního řádu. Funkce map - fold. Generátory seznamů.
7. Uživatelsky definované datové typy a způsob práce s nimi.
8. Rekurzivní datové typy a polymorfismus, částečně vyhodnocené funkce, základní úvod do typových tříd.
Pokročilá témata
9. Teorie důležitá pro čistě funkcionální programování – úvod do lambda kalkulu, výpočet jako přepisování, líné vyhodnocení
10. Programování s akcemi – použití klasických polí a zpracování vedlejších efektů (vstupně výstupní operace).
11. Monády v jazyce Haskell
12. - 13. Funkcionální programování v tradičních jazycích - rozdíly mezi jazykem Haskell a jazyky jako C# nebo Java, reprezentace stavu pomocí monád z Haskellu (LINQ v jazyce C#).
Seznam cvičení (očekává se, že všechna cvičení budou v počítačových učebnách)
1. Interpret GHC - základní použití
2. Implementace základních funkcí pro výpočet např. faktoriálu, sekvence Fibonacciho čísel nebo největšího společného dělitele.
3. Funkce a operátory, které pracují s čísly, řetězci nebo znaky.
4. Implementace složitějších funkcí, které používají techniku pattern matching nebo chráněné výrazy.
5. Implementace funkcí, které pracují se seznamy jako: length, reverse, (++), zip, zipWith.
7. Použití standardních funkcí pracujících se seznamy jako map, fold, concat atd. Generátory seznamů.
8. První programovací test.
9. Definice datového typu pro matematické výrazy. Vyhodnocení těchto výrazů.
10. Definice binárního stromu. Implementace funkcí, které pracují s tímto stromem.
11. Práce se soubory
12. Práce s poli, generátor náhodných čísel - výpočet čísla PI.
13. Druhý programovací test.