Kurs podává informace o programovacích paradigmatech a o programovacích jazycích z obecného hlediska.
Stručná historie vývoje programovacích jazyků, přehled základních paradigmat.
Syntax, jazyk, program. Abstraktní a konkrétní syntax.
Statická sémantika. Otypování, validační funkce.
Prostor jmen, viditelnost. Bloková a modulární struktura jazyka. Objektově orientované jazyky.
Typy a typové systémy. Základní typy a typové konstruktory. Polymorfní typy, parametrický a inklusní polymorfismus, přetížení, typové třídy. Podtypy, dědičnost. Typy jako sorty (množiny), signatury (heterogenní algebry), teorie (modely teorií).
Dynamická sémantika, model, výpočet.
Imperativní paradigma. Příkazy a jejich sémantika, přepisovatelné proměnné. Stav, stavové transformátory.
Funkcionální paradigma. Výrazy, funkce, parametry. Aplikace, abstrakce, redukční strategie.
Logické paradigma. Syntax a sémantika prototypového jazyka, řízení výpočtu.
Souběžné zpracování. Komunikace, uváznutí, Přerušení, události, semafory, výlučný přístup, kritické oblasti.
Volání funkcí a předávání parametrů. Volání hodnotou a jménem. Volání výsledkem, hodnotou-výsledkem. Volání odkazem.
Zkouška je písemná na konci semestru.
Každý student má nárok na jeden řádný a na jeden opravný termín.
Pomůcky ke zkoušce: pouze psací potřeby a ISIC.