COMP36411 Understanding Programming Languages syllabus 2018-2019
OverviewIn this course unit we treat a simple programming language as an object of study and analysis.
Students taking this module should gain a deeper understanding of some of the standard programming language constructs and of the overall structure of a programming language and should develop an appreciation of the role of formal semantics in the design and precise definition of a programming language.
Syntax and Semantics. BNF and abstract syntax; the meaning of expressions; approaches to semantics - operational/denotational/axiomatic.
Natural semantics for while; non-determinism; parallelism. Structural Operational Semantics: Structural operational semantics for while; non-determinism; parallelism. Equivalence.
Compiling to abstract machine code; executing abstract machine code; equivalence.
Direct-style semantics; fixpoints; equivalence; continuation semantics.
Direct use of Natural, Structural Operational and Denotational Semantics for Correctness. Assertions and inference. Soundness and completeness.
Feedback methodsThe primary method of providing feedback is the "lecture-tutorial": that is, a short-ish lecture (35-40 minutes typically) followed by an open session in which problem solutions provided by students are reviewed by the lecturer.
- Lectures (24 hours)
- Problem solving
Learning outcomes are unknown for COMP36411.
COMP36411 does not have a specified reading list.
Course unit materials
Links to course unit teaching materials can be found on the School of Computer Science website for current students.