V tomto kurze sa ponoríš do princípov funkcionálneho programovania a naučíš sa, ako využiť jeho výhody v jazykoch Haskell a Python. Na začiatku spoznáš základné techniky a koncepcie funkcionálnej paradigmy – ako pracovať s údajovými typmi, jednoduchými funkciami a aký je rozdiel medzi pomenovanými, anonymnými či lokálnymi funkciami. Postupne sa naučíš písať funkcie v Haskelli, používať if-then-else
, guarded equations
, pattern matching
, ako aj n-tice, zoznamy a koncept currying.
Pokračovať budeš funkciami na prácu s údajovými štruktúrami – zoznamami a n-ticami, pričom využiješ list comprehension
na elegantné a stručné zápisy. Dôležitou témou budú funkcie vyššieho rádu a výpočtové vzory ako mapping, filtering či folding. Tieto techniky si potom precvičíš aj v jazyku Python, kde spoznáš ich funkcionálne náprotivky – rekurziu, lambda výrazy a ďalšie.
Jedna z kľúčových častí kurzu sa venuje vyhodnocovaniu výrazov – pochopíš rozdiel medzi striktným a lenivým vyhodnocovaním a naučíš sa pracovať s nekonečnými zoznamami. Pri rekurzii sa budeš venovať aj optimalizácii výpočtov a chvostovej rekurzii, ktorá je dôležitá z hľadiska efektivity.
Neskôr si osvojíš definovanie vlastných údajových typov v Haskelli, zoznámiš sa s typovými triedami a ich inštanciami, a vytvoríš si abstraktné dátové typy ako zásobník, rad či prioritný rad, ktoré využiješ v praktických príkladoch.
Záver kurzu je zameraný na univerzálne metódy riešenia problémov – napríklad techniky „rozdeľuj a panuj“ či backtracking, ktoré si implementuješ pomocou funkcií vyššieho rádu. Na záver porovnáš funkcionálne a imperatívne programovanie v Pythone, zhrnieš si všetky poznatky z funkcionálnej paradigmy a aplikuješ ich pri riešení algoritmických úloh v Haskelli a Pythone počas záverečného testu.
Kurz ti poskytne nielen teoretický prehľad, ale najmä praktické zručnosti v písaní elegantného, efektívneho a modulárneho kódu. Ak ťa baví programovanie a chceš rozšíriť svoje myslenie o nový prístup k riešeniu problémov, tento predmet je presne pre teba.