Przedmiot stanowi wprowadzenie do teorii (i jej zastosowań) leżącej u podstaw
projektowania, opisu i implementacji językow programowania oraz specyfikacji i
weryfikacji programow. Zostaną omowione następujące zagadnienia:
\- języki imperatywne (semantyka operacyjna, semantyka denotacyjna z
elementami teorii dziedzin),
\- specyfikacja i weryfikacja programow imperatywnych (logika Hoare'a,
najsłabsze warunki wstępne),
\- procesy wspołbieżne (pamięć dzielona, przekazywanie wiadomości),
\- języki funkcyjne (strategie ewaluacji, leniwość, kontynuacje),
\- systemy typow (typy proste, podtypowanie, polimorfizm, moduły).
W ramach ćwiczeń do wykładu rozważane będą zarowno zagadnienia teoretyczne jak
i implementacje wybranych interpreterow oraz systemow typow.
Literatura:
1. Theories of Programming Languages. John C. Reynolds. Cambridge University Press, 1998.
2. The Formal Semantics of Programming Languages: An Introduction. Glynn Winskel. The MIT Press, 1993.
3. Semantics with Applications: An Appetizer. Hanne R. Nielson and Flemming Nielson. Springer, 2007.
4. Semantics of Programming Languages. Andrew M. Pitts. Unpublished lecture notes.
5. Denotational Semantics. Andrew M. Pitts. Unpublished lecture notes.
6. Types. Andrew M. Pitts. Unpublished lecture notes.
7. The Semantics of Programming Languages: An Elementary Introduction Using Structural Operational Semantics. Matthew Hennessy. John Wiley & Sons Ltd., 1990.
8. Practical Foundations for Programming Languages. Robert Harper. Cambridge University Press, 2012.
9. Essentials of Programming Languages, 3rd Edition. Daniel P. Friedman and Mitchell Wand. The MIT Press, 2013.