Název:

Programovací jazyky

Zkratka:PRJ
Ak.rok:ukončen 2004/2005
Semestr:letní
Studijní plán:
ProgramOborRočníkPovinnost
EI-BC-3VTB2.st/2.rčvolitelný
EI-MGR-3VTN1.povinný
EI-MGR-5VTI2.st/1.rčpovinný
Vyučovací jazyk:čeština
Informace veřejné:http://www.fit.vutbr.cz/study/courses/PRJ/public/
Informace pro zapsané:http://www.fit.vutbr.cz/study/courses/PRJ/private/
Kredity:6 kreditů
Ukončení:zápočet+zkouška (písemná)
Výuka:
hod./sempřednáškasem./cvičenílab. cvičenípoč. cvičeníjiná
Rozsah:39120014
 zkouškatestycvičenílaboratořeostatní
Body:50200030
Garant:Hruška Tomáš, prof. Ing., CSc., UIFS
Přednášející:Hruška Tomáš, prof. Ing., CSc., UIFS
Fakulta:Fakulta informačních technologií VUT v Brně
Pracoviště:Ústav informačních systémů FIT VUT v Brně
Prerekvizity: 
Teoretická informatika 1 (TI1), UITS
Navazující:
Funkcionální a logické programování (FLP), UIFS
Výstavba překladačů (VPR), FIT
Základy překladačů (ZAP), UIFS
 
Cíle předmětu:
  Osvojit si teoretické základy pro definici sémantiky (významu) konstrukcí užívaných v programovacích jazycích. Získat schopnosti formálně tuto sémantiku definovat a formální definici používat. Seznámit se se základními modely programovacích jazyků.
Anotace:
  Způsoby definice sémantiky programovacích jazyků: denotační, operační a axiomatická. Lambda kalkul a jeho použití pro denotační sématiku. Formální definice základních typů, struktur a konstrukcí denotační sématikou. Axiomatická sémantika a její použití pro dokazování programů. Příklad axiomatické definice jazyka. Sémantika jazyků pro funkcionální a logické programování. Základy objektového programování.
Požadované prerekvizitní znalosti a dovednosti:
  teoretická informatika, formální jazyky
Získané dovednosti, znalosti a kompetence:
  Schopnost formálně definovat sématiku programovacích jazyků a používat formální definice v praxi. Schopnost a praktické použití dokazování programů.
Osnova přednášek:
 
  • Historie vývoje konstrukcí programovacích jazyků.
  • Způsoby definice syntaxe a sémantiky.
  • Základy netypovaného lambda kalkulu.
  • Notace zápisu výrazů, vyhodnocování.
  • Rekurzivní funkce.
  • Rozsahy platnosti jmen, typová kontrola.
  • Datové typy jednoduché a strukturované, ekvivalence typů a polymorfizmus.
  • Denotační sémantika.
  • Floyd-Hoarova logika.
  • Axiomatická sémantika a dokazování programů.
  • Volání podprogramů a způsoby předávání parametrů.
  • Objektově orientované programování.
  • Funkcionální programování, logické programování.
Osnova numerických cvičení:
 
  • Základní konstrukce a operace lambda kalkulu.
  • Reprezentace základních typů v lambda kalkulu.
  • Reprezentace strukturovaných typů v lambda kalkulu.
  • Denotační sémantika jednoduchého jazyka.
  • Základy Floyd-Hoareovy logiky.
  • Dokazování programů.
Osnova ostatní - projekty, práce:
 
  • Realizace části sémantické analýzy překladačů různých jednoduchých jazyků v kombinaci s projektem v předmětu Základy překladačů.
Literatura referenční:
 
  • Gordon,J.C.: Programming Language Theory and its Implementation, Prentice Hall - Series in Computer Science, Prentice Hall New York 1988, 255 str., ISBN 0-13-730409-9
  • Sebesta,R.,W.: Concepts of Programming Languages, Addison Wesley, Massachusetts 1999, 670 str., ISBN 9-780201-385960
Literatura studijní:
 
  • Češka,M., Motyčková, L., Hruška,T.: Vyčíslitelnost a složitost, skriptum VUT Brno, Ediční středisko VUT Brno 1992, 217 str., ISBN 80-214-0441-8
Kontrolovaná výuka:
  Účast na numerických cvičeních. Jde o 14 denní cyklus. Je možné se mimořádně účastnit v druhém týdnu.
Průběžná kontrola studia:
  Test v polovině semestru. Průběžná kontrola řešení projektu vedoucím.
Podmínky zápočtu:
  Nejméně polovina bodů, které lze získat za aktivity během semestru (testy a projekt), tj. 25 bodů.