Předmět: Paradigmata programování 2

» Seznam fakult » PRF » KMI
Název předmětu Paradigmata programování 2
Kód předmětu KMI/PP2
Organizační forma výuky Přednáška + Cvičení
Úroveň předmětu Bakalářský
Rok studia nespecifikován
Semestr Letní
Počet ECTS kreditů 6
Vyučovací jazyk Čeština
Statut předmětu Povinný, Povinně-volitelný
Způsob výuky Kontaktní
Studijní praxe Nejedná se o pracovní stáž
Doporučené volitelné součásti programu Není
Vyučující
  • Laštovičková Adéla, Mgr.
  • Holcman Jan, Mgr.
  • Balun Jiří, Mgr.
  • Krupka Michal, doc. RNDr. Ph.D.
  • Laštovička Jan, Mgr. Ph.D.
Obsah předmětu
Jedná se o druhou část čtyřdílného kurzu věnovaného základním programovacím paradigmatům. Obecným cílem kurzu je seznámit studenty s principy programování bez úzké vazby na konkrétní programovací jazyk. 1. Makra v Lispu: expanzní funkce, rozšíření vyhodnocovacího modelu, problémy s makry. Rekurze v makrech, čas expanze a čas běhu. 2. Mutace proměnných, mutace v datových strukturách. Seznam jako zásobník, kruhové seznamy. Generátory. 3. Pokročilá témata z funkcionálního programování 1: líné vyhodnocování a proudy, styl předávání pokračování. 4. Pokročilá témata z funkcionálního programování 2: normální a aplikativní model vyhodnocování a jejich srovnání. Beta-redukce, parciální aplikace a currying. Implementace jazyka s normálním modelem vyhodnocování. 5. Dynamické a statické typování. Atomické a složené typy, typové funkce. Parametrické typy, substituce a unifikace. Syntaktický strom. Hindleyho-Milnerův typový systém. 6. Zásobníkové výpočty: Interpret jednoduchého jazyka pro zásobníkový stroj, viditelnost a životnost vazeb, lexikální v. dynamický rozsah platnosti. Kompilátor jednoduchého jazyka pro zásobníkový stroj.

Studijní aktivity a metody výuky
Přednášení, Demonstrace
Výstupy z učení
Studenti se seznámí s pokročilými pojmy z paradigmat programování.
1. Znalost Rozpoznej výhody a nevýhody používání pokročilých programovacích konstruktů jakými jsou makra a kontinuace.
Předpoklady
KMI/PP1 Paradigmata programování 1
KMI/PP1

Hodnoticí metody a kritéria
Ústní zkouška, Písemná zkouška

Aktivní účast v hodině. Plnění zadaných úkolů. Složení ústní (příp. písemné) zkoušky.
Doporučená literatura
  • Bird R., Wadler P. (1988). Introduction to Functional Programming. Prentice Hall, Englewood Cliffs, New Jersey.
  • Felleisen M., Findler R. B., Flatt M., Krishnamurthi S. (2001). How To Design Programs: An Introduction to Computing and Programming.
  • H. Abelson, G. J. Sussman. (1996). Structure and Implemantation of Computer Programs. Cambridge.
  • Martin Henz, Tobias Wrigstad, Harold Abelson, Gerald Jay Sussman, Julie Sussman. (2022). Structure and Interpretation of Computer Programs: JavaScript Edition.
  • Springer G., Friedman D.P. (1994). Scheme and the Art of Programming.
  • Yinong Chen. (2016). Introduction to Programming Languages: Programming in C, C++ Scheme, Prolog, C# and SOA. Kendall Hunt Pub Co.


Studijní plány, ve kterých se předmět nachází
Fakulta Studijní plán (Verze) Kategorie studijního oboru/specializace Doporučený ročník Doporučený semestr
Fakulta: Přírodovědecká fakulta Studijní plán (Verze): Informatika (2020) Kategorie: Informatické obory 1 Doporučený ročník:1, Doporučený semestr: Letní
Fakulta: Přírodovědecká fakulta Studijní plán (Verze): Informatika - specializace Obecná informatika (2021) Kategorie: Informatické obory 1 Doporučený ročník:1, Doporučený semestr: Letní
Fakulta: Přírodovědecká fakulta Studijní plán (Verze): Bioinformatika (2021) Kategorie: Informatické obory 1 Doporučený ročník:1, Doporučený semestr: Letní
Fakulta: Přírodovědecká fakulta Studijní plán (Verze): Informatika - specializace Programování a vývoj software (2021) Kategorie: Informatické obory 1 Doporučený ročník:1, Doporučený semestr: Letní
Fakulta: Přírodovědecká fakulta Studijní plán (Verze): Informatika pro vzdělávání maior (2024) Kategorie: Informatické obory 2 Doporučený ročník:2, Doporučený semestr: Letní