Název:

Programovací jazyky

Zkratka:PRJ
Ak.rok:ukončen 2002/2003
Semestr:letní
Studijní plán:
ProgramOborRočníkPovinnost
EI-BC-3VTB2.st/1.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
Cvičící:Cvrček Daniel, doc. Ing., Ph.D., UITS
Kolář Dušan, doc. Dr. Ing., 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), FIT
Navazující:
Funkcionální a logické programování (FLP), UIFS
Výstavba překladačů (VPR), FIT
Základy překladačů (ZAP), FIT
 
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í.
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:
  1. Historie vývoje konstrukcí programovacích jazyků.
  2. Způsoby definice syntaxe a sémantiky.
  3. Základy netypovaného lambda kalkulu.
  4. Notace zápisu výrazů, vyhodnocování.
  5. Rekurzivní funkce.
  6. Rozsahy platnosti jmen, typová kontrola.
  7. Datové typy jednoduché a strukturované, ekvivalence typů a polymorfizmus.
  8. Denotační sémantika.
  9. Floyd-Hoarova logika.
  10. Axiomatická sémantika a dokazování programů.
  11. Volání podprogramů a způsoby předávání parametrů.
  12. Objektově orientované programování.
  13. Funkcionální programování, logické programování.
Osnova numerických cvičení:
  1. Základní konstrukce a operace lambda kalkulu.
  2. Reprezentace základních typů v lambda kalkulu.
  3. Reprezentace strukturovaných typů v lambda kalkulu.
  4. Denotační sémantika jednoduchého jazyka.
  5. Základy Floyd-Hoareovy logiky.
  6. Dokazování programů.
Osnova ostatní - projekty, práce:
  1. 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í:
  1. 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
  2. Sebesta,R.,W.: Concepts of Programming Languages, Addison Wesley, Massachusetts 1999, 670 str., ISBN 9-780201-385960
Literatura studijní:
  1. Č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ů.