Pre-requisites : CS201, CS331
Overview of programming language constructs like procedures, jumps, non-determinism, continuations. Introduction to semantic systems. Operational semantics: Labelled transition systems, semantics of a simple language. Denotational semantics: lambda-calculus, semantics of a simple language with loops. Axiomatic semantics: Hoare logic, semantics of a subset of Pascal. Reasoning about concurrent features in programming languages using modal logic.
1. G. Winskel, Formal Semantics of Programming Languages: An Introduction, MIT Press, Cambridge, 1993.
1. M. J. C. Gordon, The Denotational description of programming languages: An Introduction, Springer-Verlag, 1979.
2. D. Gries, Science of Programming, Springer-Verlag, 1981.
3. D. Friedman, M. Wand and C. Haynes, Essentials of programming languages, 2nd Ed, MIT Press, 2001.
4. J. R. Hindley and H. P. Seldin, Introduction to Combinators and Lambda-calculus, Cambridge University Press, 1988.