Part I. Operational Semantics and Language Implementation: natural semantics, structural operational semantics, abstract machines, correctness of language implementation.
Part II. Denotational Semantics and Program Analysis: denotational semantics, fixed-point theory, program analysis and transformation.
Part III. Axiomatic Semantics and Program Verification: axiomatic semantics, program specification and verification, weakest pre-conditions, verification condition generation.
After completing the course, the successful doctoral student should be able to:
- Account for the main semantic styles used for capturing the meaning of programs in a formal way, both in theory and on examples.
- Relate different semantic styles, and compare their strengths and weaknesses.
- Use these semantic styles for program analysis, optimisation and verification, both in theory and as a basis for software tools.
- Extend a programming language with new language features, and extend its semantics accordingly.
- Prove formally properties of a given semantics.