Note: The timetable is provisional. We will likely deviate from it a bit during the course depending how long the material takes to deliver in practice, how much discussion there is during the lectures (in previous years there has been a lot, which was great!), how many groups we will have for the student presentations, etc.

Mon, 5 Oct, 14:00–16:00 Introduction and Basic Concepts
Thu, 8 Oct, 14:00–16:00 Fuzzing
Mon, 12 Oct, 14:00–16:00 Demo: AFL
Coursework Discussion
Compiler Fuzzing and Derived Test Oracles
Tue, 13 Oct, 17:00 Coursework: Teams and Project Choice Deadline
Thu, 15 Oct, 14:00–16:00 NO CLASS
Mon, 19 Oct, 14:00–16:00 Compiler Fuzzing and Derived Test Oracles
Tutorial: Fuzzing
Thu, 22 Oct, 14:00–16:00 Undefined Behaviour
Unstable Code
Mon, 26 Oct, 14:00–16:00 Tutorial: Undefined Behaviour and Unstable Code
Dynamic Symbolic Execution: Introduction
Thu, 29 Oct, 14:00–16:00 Dynamic Symbolic Execution: Introduction
Dynamic Symbolic Execution: Path Explosion
Dynamic Symbolic Execution: Constraint Solving
Thu, 29 Oct and Fri, 30 Oct Coursework: GTA Meetings
Mon, 2 Nov, 14:00–16:00 Dynamic Symbolic Execution: Constraint Solving
Dynamic Symbolic Execution: Applications
Tutorial: Dynamic Symbolic Execution
Thu, 5 Nov, 14:00–16:00 Compiler Sanitizers
Runtime Techniques for Security
Mon, 9 Nov, 14:00–16:00 Tutorial: Compiler Sanitizers
Tutorial: Runtime Techniques for Security
Thu, 12 Nov, 14:00–16:00 Coverage Criteria and Mutation Testing
Tutorial: Coverage Criteria and Mutation Testing
Fri, 13 Nov, 17:00 Coursework: Report and Artifact Deadline
Mon, 16 Nov, 14:00–16:00 Directed Testing
LLM-based Testing
Wed, 17 Nov, 10:00 Coursework: Presentation Slides Deadline
Wed, 18 Nov, 17:00 Coursework: Student Presentation Schedule Released
Thu, 19 Nov, 14:00–16:00 Coursework: Student Presentations
Mon, 23 Nov, 14:00–16:00 Coursework: Student Presentations
Mon, 30 Nov, 14:00–15:00 Revision (tentative)