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, 13 Jan, 11:00 Introduction and basic concepts
Mon, 13 Jan, 12:00 Fuzzing
Fri, 17 Jan, 09:30 Fuzzing
Mon, 20 Jan, 11:00 Fuzzing coursework presentation & AFL demo
Mon, 20 Jan, 12:00 Fuzzing project released and teams due
Mon, 20 Jan, 12:00 Tutorial & Compiler fuzzing and derived test oracles
Fri, 24 Jan, 9:30 Compiler fuzzing and derived test oracles &
Safe C compilers
Mon, 27 Jan, 11:00 Compiler sanitizers
Mon, 27 Jan, 12:00 Tutorial
Fri, 31 Jan, 9:30 Undefined behaviour
Mon, 3 Feb, 11:00 Unstable code
Mon, 3 Feb, 12:00 Tutorial
Wed, 5 Feb, 23:59 Fuzzing project due
Fri, 7 Feb, 9:00 Symex project released
Fri, 7 Feb, 9:30 Unstable code &
Dynamic symbolic execution
Mon, 10 Feb, 11:00 Dynamic symbolic execution &
Symex coursework presentation + Q&A
Mon, 10 Feb, 12:00 Dynamic symbolic execution
Fri, 14 Feb, 9:30 Dynamic symbolic execution
Mon, 17 Feb, 11:00 Tutorial
Mon, 17 Feb, 12:00 Student presentation spec released
Mon, 17 Feb, 12:00 Data-flow analysis
Mon, 17 Feb, 23:59 Symex project due
Fri, 21 Feb, 9:30 Guest lecture (examinable): Automated software engineering: the case of advanced code coverage criteria by Dr Sebastien Bardin
Mon, 24 Feb, 11:00 Program analysis for security
Mon, 24 Feb, 12:00 Tutorial
Wed, 26 Feb, 23:59 Student presentation slides due
Fri, 28 Feb, 9:30 Student presentations (part 1)
Mon, 2 Mar, 11:00 Student presentations (part 2)
Mon, 2 Mar, 12:00 Student presentations (part 3)
Fri, 6 Mar, 9:30 Tutorial / Revision