PředmětyPředměty(verze: 978)
Předmět, akademický rok 2025/2026
   Přihlásit přes CAS
Principy programovacích jazyků - NPRG084
Anglický název: Principles of Programming Languages
Zajišťuje: Katedra softwaru a výuky informatiky (32-KSVI)
Fakulta: Matematicko-fyzikální fakulta
Platnost: od 2025
Semestr: letní
E-Kredity: 5
Rozsah, examinace: letní s.:2/2, Zk [HT]
Počet míst: neomezen
Minimální obsazenost: neomezen
4EU+: ne
Virtuální mobilita / počet míst pro virtuální mobilitu: ne
Stav předmětu: vyučován
Jazyk výuky: čeština
Způsob výuky: prezenční
Garant: RNDr. Vít Šefl, Ph.D.
Neslučitelnost : NPRG003
Anotace -
Tento předmět se věnuje studiu programovacích jazyků. Studenty seznámí se základními principy a koncepty paradigmat včetně strukturovaného, objektově orientovaného a funkcionálního programování. Koncepty jsou ilustrovány na příkladech konkrétních jazyků a studenti získají zkušenosti s implementací některých konceptů v praxi.
Poslední úprava: Holan Tomáš, RNDr., Ph.D. (21.05.2025)
Podmínky zakončení předmětu -

Pro zakončení předmětu je zapotřebí získat zápočet a složit zkoušku. Zápočet bude udělen za úspěšné dokončení úkolů zadávaných v průběhu semestru nebo za vypracování zápočtového programu v rozsahu dohodnutém s vyučujícím.

Poslední úprava: Holan Tomáš, RNDr., Ph.D. (21.05.2025)
Literatura -

1. John C. Mitchell. Concepts in Programming Languages. ISBN: 978-0521780988, Cambridge University Press, 2003.

2. Mark Priestley. A Science of Operations: Machines, Logic and the Invention of Programming. ISBN 978-1-84882-554-3, Springer, 2011.

3. Robert Nystrom. Crafting interpreters. ISBN: 978-0990582939, Genever Benning, 2021.

4. Ramsey, Norman. Programming Languages: Build, Prove, and Compare. ISBN: 9781107180185. Cambridge University Press, 2022.

Poslední úprava: Holan Tomáš, RNDr., Ph.D. (21.05.2025)
Požadavky ke zkoušce -

Zkouška je ústní. Požadavky odpovídají sylabu předmětu v rozsahu, který byl přednesen na přednáškách.

Poslední úprava: Holan Tomáš, RNDr., Ph.D. (21.05.2025)
Sylabus -

Počátky programovacích jazyků

Raná historie programovacích jazyků
Nestrukturované programování
Vědecké, obchodní a symbolické programování

Modely programovacích jazyků

Specifikace syntaxe jazyka
Abstraktní stroje a sémantické modely
Lambda kalkul jako programovací jazyk

Programovací paradigma Algolu

Strukturované programování a bloková struktura kódu
Předávání parametrů, rozsah platnosti proměnných, výjimky
Bezpečnost, datové typy a statické typování

Funkcionální programování

Programování pomocí výrazů a funkcí
Algebraické datové typy a typy funkcí
Typová kontrola a odvozování typů

Objektová orientace a abstrakce dat

Moduly a abstraktní datové typy
Zapouzdření, dědičnost a podtypy
Prototypové a třídové OO

Další programovací paradigmata

Logické programování, unifikace a rezoluce
Asynchronní, reaktivní a souběžné programování
Metaprogramování, událostmi řízené programování

Poslední úprava: Holan Tomáš, RNDr., Ph.D. (21.05.2025)
 
Univerzita Karlova | Informační systém UK