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.
|