Skip to main content Link Search Menu Expand Document (external link)

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

Lecture Recording

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

Demo script

Lecture Recording

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).

Demo code

Lecture Recording

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

Lecture recording

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)

© 2022-2024 Martin Kellogg, Westley Weimer, René Just, Jonathan Bell, Adeel Bhutta and Mitch Wand. Released under the CC BY-SA license