Calendar
Week 1
- Jan 18
- Introduction
- Reading: none, but you should come to class (even if you’re on the waitlist).
In-class: background survey and start HW0
Week 2
- Jan 24
- Homework 0 due
- Jan 25
- Testing Basics
- Reading: Shore’s The Art of Agile Development: Test-Driven Development and SQLite’s How SQLite is Tested
In-class: start HW1
Week 3
- Jan 31
- Homework 1 due
- Feb 1
- Coverage
- Reading: Ivankovic et al.’s Code Coverage at Google and Chen et al.’s Revisiting the Relationship Between Fault Detection, Test Adequacy Criteria, and Test Set Size
In-class: start HW2
Week 4
- Feb 7
- Homework 2 due
- Feb 8
- Fuzzing
- Reading: Zeller’s Fuzzing: Breaking Things With Random Inputs
In-class: start HW3
Lecture recording: video (.mp4), transcript (.vtt)
Week 5
- Feb 14
- Homework 3 due
- Feb 15
- More Test Input Generation
- Reading: Fraser and Arcuri’s EvoSuite: Automatic Test Suite Generation for Object-Oriented Software
In-class: start HW4
Lecture recording: video (.mp4), transcript (.vtt)
Week 6
- Feb 21
- Homework 4 due
- Feb 22
- Oracles and Invariants
- Reading: Ernst et al.’s The Daikon system for dynamic detection of likely invariants and Yang et al.’s Finding and Understanding Bugs in C Compilers
In-class: start HW5
Lecture recording: video (.mp4), transcript (.vtt)
Week 7
- Feb 28
- Homework 5 due
- Feb 29
- Mutation Testing
- Reading: Petrović et al.’s Practical Mutation Testing at Scale:A view from Google
In-class: start HW6
Lecture recording: video (.mp4), transcript (.vtt)
Week 8
- Mar 7
- Other Dynamic Analyses
- Reading: Musuvathi et al.’s Finding and Reproducing Heisenbugs in Concurrent Programs
In-class: continue working on HW6
Lecture recording: video (.mp4), transcript (.vtt)
Week 9
- Mar 13
- Homework 6 due
- Mar 14
- No class (spring break)
Week 10
- Mar 21
- Intro to Static Analysis
- Reading: none (study for the midterm)
In-class: midterm
Week 11
- Mar 28
- Dataflow Analysis
- Reading: Ayewah et al.’s Experiences Using Static Analysis to Find Bugs
Lecture recording: webex
In-class: start HW7
Week 12
- Apr 3
- Homework 7 due
- Apr 4
- Abstract Interpretation (1)
- Reading: sections 2.0 to 2.14 of Ernst’s Notes on Program Analysis
In-class: start HW8
Week 13
- Apr 10
- Homework 8 due
- Apr 11
- Abstract Interpretation (2)
- Reading: sections 2.15 to 2.20 of Ernst’s Notes on Program Analysis and sections 1.0 to 2.2 of Jones and Nielson’s Abstract Interpretation: a semantics-based tool for program analysis, then skim the remainder of chapter 2 of the same
In-class: start HW9
Week 14
- Apr 17
- Homework 9 due
- Apr 18
- Using SMT solvers
- Reading: Bjørner et al.’s Programming Z3 (article begins on page 165 of the PDF; not as long as it looks!). Optional additional reading (may be useful for studying for the final) on some of the topics covered in class: Chapter 12 of Aldrich, Le Goues, and Padhye (chapter 12 starts on page 77 of the PDF).
In-class: start HW10
Week 15
- Apr 24
- Homework 10 due
- Apr 25
- Class’ Choice: DevOps and Wrapup
- Reading: Sloss’ “Introduction”, Baye’s “Emergency Response”, and Lunney and Lueder’s “Postmortem Culture: Learning from Failure” from Google’s Site Reliability Engineering
In-class: fill out the course evaluation
Week 16
- Exam Slot (May 9, 6PM, CKB 313)
- final exam (cumulative, about half from before the midterm and half after)