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

» Seznam fakult » PRF » KMI
Název předmětu Paradigmata programování 1
Kód předmětu KMI/YPP1
Organizační forma výuky Přednáška + Cvičení
Úroveň předmětu Bakalářský
Rok studia nespecifikován
Semestr Zimní
Počet ECTS kreditů 12
Vyučovací jazyk Čeština
Statut předmětu nespecifikováno
Způsob výuky Kontaktní
Studijní praxe Nejedná se o pracovní stáž
Doporučené volitelné součásti programu Není
Vyučující
  • Krupka Michal, doc. RNDr. Ph.D.
  • Bartl Eduard, doc. RNDr. Ph.D.
Obsah předmětu
Tento kurs je zaměřen na funkcionální programování a související problematiky. Zejména se jedná o problémy vyhodnocování výrazů, aplikace procedur a hierarchických dat konstruovaných z párů. Jako modelovací jazyk je během kursu používán jazyk Scheme. V závěru kursu jsou studenti seznámeni s principy konstrukce interpretu jednoduchého funkcionálního jazyka. Po absolvování kursu by studenti měli získat nadhled nad funkcionálním programováním a měli by být schopni rychle se sžít s libovolným funkcionálním programovacím jazykem. 1. Programovací jazyky, jejich syntaxe a sémantika. Funkcionální paradigma, symbolické výrazy, abstraktní interpret jazyka Scheme, elementy jazyka, procedury, speciální formy, vyhodnocování. 2. Vytváření abstrakcí pomocí procedur. Lambda výrazy. Procedury. Aplikace procedur, prostředí, lexikální a dynamický rozsah platnosti. Procedury vyšších řádů. Procedury versus matematické funkce. Kompozice procedur. Abstrakční bariéry. Interní definice. Procedury jako parametry a výsledky vyhodnocení. 3. Hierarchická data. Páry, konstrukce páru. Seznamy. Kvotování, manipulace se seznamy, mapování, spojování, generování seznamů. Explicitní aplikace procedur a vyhodnocení symbolických výrazů, filtrace a řešení problémů pomoci nich. Pohled na program jako na data. Pohled na data jako na program. 4. Indukce a rekurze. Princip indukce. Obecný princip rekurze. Limitní podmínka rekurze, předpis rekurze. Indukce a správnost rekurzivních procedur. y- kombinátor. Výpočetní procesy generované rekurzivními procedurami. Výpočetní procesy, typy rekurzivních procesů. Fáze navíjení a odvíjení. Efektivita výpočetních procesů generovaných rekurzivními procedurami. 5. Pokročilá práce se seznamy. Vyhodnocování postfixových výrazů, hloubková akumulace, procházení (vnořených) seznamů do hloubky a do šířky. Reprezentace množin a relací pomocí seznamů a procedur vyšších řádů. Kombinatorika na seznamech, symbolická manipulace s výrazy, algoritmy vnějšího třídění. 6. Konstrukce interpretu ryze funkcionální podmnožiny jazyka Scheme. Typový systém, generické procedury, koerce. Datové reprezentace elementů jazyka. Implementace vyhodnocovacího procesu. Vytvoření počátečního prostředí.

Studijní aktivity a metody výuky
Přednášení, Metody práce s textem (učebnicí, knihou), Laborování
Výstupy z učení
Cílem předmětu je zvládnout základy programování a seznámit se s funkcionálním programováním.
2. Porozumění Identifikuj správné zůsoby vývoje funkcionálních programů.
Předpoklady
nespecifikováno

Hodnoticí metody a kritéria
Analýza výkonů studenta

Zápočet se udělí za úlohy vypracované během semestru. Zkouška je písemná a praktická. Praktickou část představuje vypracování programu.
Doporučená literatura
  • Bird R., Wadler P. (1988). Introduction to Functional Programming. Prentice Hall, Englewood Cliffs, New Jersey.
  • Dybvig, R. K. (1996). The Scheme Programming Language. Prentice Hall, A Simon and Schuster Company, Upper Saddle River, NJ.
  • Felleisen M., Findler R. B., Flatt M., Krishnamurthi S. (2001). How To Design Programs: An Introduction to Computing and Programming. The MIT Press, Cambridge, Massachusetts.
  • H. Abelson, G. J. Sussman. (1996). Structure and Implemantation of Computer Programs. Cambridge, Massachusetts.
  • Konečný, Vychodil. Paradigmata programování 1, díl A..
  • Konečný, Vychodil. Paradigmata programování 1, díl B..
  • Manis V. S., Little J. J. (1995). The Schematics of Computation. Prentice Hall, Englewood Cliffs, New Jersey.
  • Springer G., Friedman D.P. (1994). Scheme and the Art of Programming. The MIT Press, Cambridge, Massachusetts.
  • 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