| Number | Lecture Date | Title | Fullsize |
| L0 | 1/3/2011 | Introduction | (PDF) |
| L1 | 1/3/2011 | Specifications | (PDF) |
| L2 | 1/5/2011 | Testing | (PDF) |
| L3 | 1/7/2011 | Procedural specifications | (PDF) |
| L4 | 1/10/2011 | Abstract data types | (PDF) |
| L5 | 1/12/2011 | Abstraction functions and representation invariants | (PDF) |
| L6 | 1/14/2011 | Subclasses and subtypes | (PDF) |
| L7 | 1/19/2011 | Preventing null pointer errors | (PDF) |
| L8 | 1/21/2011 | Polymorphism (generics) | (PDF) |
| L9 | 1/24/2011 | Design patterns (1) | (PDF) |
| L10 | 1/26/2011 | Identity and equality | (PDF) |
| L11 | 2/2/2011 | Debugging | (PDF) |
| L12 | 2/4/2011 | Exceptions | (PDF) |
| L13 | 2/7/2011 | Reasoning about ADTs | (PDF) |
| L14 | 2/9/2011 | Reasoning about code | (PDF) |
| L15 | 2/11/2011 | Design patterns (2) | (PDF) |
| L16 | 2/14/2011 | Module dependences | (PDF) |
| L17 | 2/16/2011 | Design patterns (3) | (PDF) |
| L18 | 2/18/2011 | System integration | (PDF) |
| L19 | 2/23/2011 | Usability | (PDF) |
| L20 | 3/2/2011 | Automated verification | (PDF) |
| L21 | 3/11/2011 | Wrapup | (PDF) |