Teaching semester : S1
Target skills :
This module introduces the main concepts available in programming languages to execute a program on a machine. It aims to provide:
- the formal tools allowing to describe (static and dynamic) program semantics;
- the main algorithms and transformation steps implemented within a compiler to produce a sound and correct executable code.
Program summary :
1. The formalisms used to describe programming language semantics: operational semantics, axiomatic semantics, denotational semantics. Application to a high-order imperative programming language.
2. Compiler architecture
3. Type systems: formalization and application to imperative and functional languages
4. Program execution environment, code generation
5. Introduction to code optimization, data-flow analysis
6. Program correctness and verification
This course aims to provide students with useful tools and methods needed to effectively communicate with other scientists.