| Date | Topic | Materials | Readings | Assignments |
|---|---|---|---|---|
| 09/30 | Introduction | Slides (4 pages) | ||
| 10/07 | Best practices and version control | Slides (4 pages) | Reading 1 | Git bisect (due 10/11) |
| 10/14 | Coverage-based testing | Slides (4 pages) | Reading 1 Reading 2 Reading 3 |
Coverage (due 10/18) |
| 10/21 | Mutation-based testing | Slides (4 pages) Coverage vs. Mutation |
Reading 1 Reading 2 (sec. 1-4) Reading 3 Reading 4 |
|
| 10/28 | Delta debugging | Slides (4 pages) | Reading 1 (sec. 1-3) Alternative link |
|
| 11/04 | Invariants and partial oracles | Slides (4 pages) | Reading 1 Reading 2 (sec. 1-4, 6-7, and 11) |
|
| 11/11 | No class (holiday) | Revisit slides 26-43 (4 pages) | Reading 1 (ch. 2) | |
| 11/18 | Abstract interpretation | Reading 1 (sec. 1-2.2) | ||
| 11/25 | Abstract interpretation | |||
| 12/02 | Solver-aided reasoning | |||
| 12/09 | Wrap up and Q&A | |||
| 12/16 | Final exam |
Advanced Topics in Software Systems
CSE P 504 · Fall 2026
Schedule
Course description
This course teaches on the principles of dynamic and static program analysis, emphasizing state-of-the-art approaches to effective software testing, debugging, and verification. Lectures and discussions contribute to theoretical understanding. In-class activities and written homeworks provide a hands-on experience.
The goal of the class is for you to come away with a new perspective on testing, debugging, and verification. You already know how to perform these tasks, and you probably do so as part of your job. This class will introduce you to new ideas, methodologies, and tools from the state of the art, including from research. Seeing new ways of working and different viewpoints will enable you to take advantage of these ideas, or to adapt them to your own work environment, or to understand that their limitations make them impractical for you to use.
Many of the techniques you will use are in active production use at forward-looking companies. Others have not yet hit the mainstream, and we will discuss why.
Course format
The class meets once a week in person. Fully remote attendance is not permitted. Student interaction during lecture is expected.
Before each class meeting, do the assigned reading and do the setup for that week’s assignment. This will make the class more productive.
Each class meeting consists of two parts. The first part is lecture and discussion; the second part is an in-class exercise. You can view the second part of the class meeting as a chance to start on the week’s assignment, while the course staff are available to answer questions.
Grading
There are individual homeworks, group-based in-class exercises, and a final exam. Grades will be based on these components and participation:
- 40%: Homeworks and in-class exercises
- 40%: Final exam
- 20%: Participation
Late policy
Assignments are generally due on Sunday night, because previous students have wanted to work over the weekend.
Assignments must be submitted on Canvas by the due date and time. Unless otherwise noted, all times are given in Pacific Time. The submission site remains open for 48 hours after the deadline. Assignments submitted within 24 hours after the deadline will incur a 10% penalty; assignments submitted within 24 to 48 hours will incur a 20% penalty. Assignments will not be accepted more than 48 hours after the deadline, except in extraordinary circumstances (in which case, discuss your situation with the instructor prior to the deadline).
General course policies
You can find the general course policies here. Note that CSE P 504 permits groupwork by pairs of students for in-class exercises.
Requirements and background
Students should be proficient developers, but do not need to know any particular programming language. Some activities and homeworks provide code for you to manipulate or extend. That code is often in Java. (Java is a widely-used memory-managed language, which made it an attractive target for research; and since much previous research used Java, subsequent research used Java as well to build upon it and to enable direct comparison.)