Description
Aims:
Program analysis is widely used in industry to ensure software quality and security on various stages of software development process. This module covers both theoretical and practical aspects of modern program analysis. First, the module introduces static program analysis techniques such as data flow analysis and abstract interpretation. Second, the module demonstrates dynamic analysis techniques such as taint analysis and race detection. Third, the module shows how these techniques are used in practice to ensure software quality and security. Finally, the module discusses the implementation of program analysis techniques.Ìý
Intended learning outcomes:
On successful completion of the module, a student will be able to:Ìý
- Rigorously reason about software properties.Ìý
- Choose appropriate program analysis techniques in different stages and contexts of software development. Ìý
- Apply modern program analysis tools to real-world software and correctly interpret their output. Ìý
- Implement custom program analysis tools.Ìý
Indicative content:
The following are indicative of the topics the module will typically cover:
- Introduction to program analysis.
- Pattern-based analysis.
- Lattice theory.
- Data-flow analysis:
- Constant propagation.
- Live variables.
- Reaching definitions.
- Abstract Interpretation.
- Dynamic analysis:
- Dynamic race detection.
- Buffer overflow detection.
- Dynamic taint analysis.
- Application of dynamic analysis (fuzz testing, web security).
- Program analysis in practice.
Requisites:
To be eligible to select this module as an optional or elective, a student must be registered on a programme and year of study for which it is a formally available.
Module deliveries for 2024/25 academic year
Last updated
This module description was last updated on 8th April 2024.
Ìý