Lecture Notes

Week 1
L1 Introduction (PDF)
L2 Object semantics (PDF)
Week 2
L3 Subclassing (PDF)
L4 Specifications (PDF)
L5 Testing (PDF)
Week 3

Object model notations

Code summary



L7 Introduction to ADTs (PDF)
Week 4
L8 Representation invariants (PDF)
L9 Abstraction functions (PDF)
L10 Dependencies and decoupling (PDF)
Week 5
L11 Exceptions (PDF)
L12 Equality (PDF)
L13 Polymorphism: guest lecture by Gilad Bracha  
Week 6
L14 Subtypes and subclasses (PDF)
Week 7
L15 Classes and interfaces (PDF)
L16 Usability 1 (PDF) (Courtesy of Prof. Robert Miller. Used with permission.)
L17 Usability 2 (PDF) (Courtesy of Prof. Robert Miller. Used with permission.)
Week 8
L18 Design patterns (PDF)
L19 Design project experiences 1 (PDF)
L20 Design project experiences 2 (PDF)
Week 10
L21 Managing a small software team (PDF) (Courtesy of Corey McCaffrey. Used with permission.)
Week 11
L22 Guest lecture by Joshua Bloch and Neal Gafter