The following schedule is a rough estimate and is subject to change.
Week Dates Topics Readings Slides
1 1/13 Intro Slides
1/15 Security fundamentals Slides
2 1/20, 1/22 Memory corruption vulnerabilities Slides
3 1/27, 1/29 Memory corruption vulnerabilities Exploiting Format String Vulnerabilities Slides
4 2/3 Memory corruption defense and advanced attacks Slides
2/5 Input validation Slides
5 2/10, 2/12 Testing Slides
6 2/17, 2/19 Fuzzing AFL technical details Slides
7 2/24, 2/26 Symbolic execution Slides
8 3/3 Symbolic execution
3/5 Intro to Rust Slides
9 3/10, 3/12 Spring break Give me a break!
10 3/17, 3/19 Rust; Rust lab session Slides
11 3/24, 3/26 Rust; property-based testing; borrow checking Slides Rustlings exercises
12 3/31 Rust lab session; program verification
4/2 Program verification Ch4 of “Logic in Computer Science: Modelling and Reasoning about Systems” Slides
13 4/7, 4/9 Program verification
14 4/14, 4/16 Reference monitors Enforceable Security Policies Slides
15 4/21, 4/23 Software-based fault isolation SFI Survey Slides
16 4/28 Execution integrity Slides
4/30 Final exam review