Lecture Topics

Readings: EJ numbers refer to Items, not chapters, in Effective Java 3rd edition
PP numbers refer to Topics, not chapters, in Pragmatic Programmer 2nd (20th Anniversary) edition

DateDescription
June 22 Motivation; Reasoning about Straight-line Code
EJ: preface; PP: preface, 1-3, 5, 6
June 24 Reasoning about Conditionals and Loops
PP 38
June 27 Reasoning Wrap-up; Specifications
June 29 Specifications; Abstract Data Types (ADT)
PP 7, 23
July 1 ADTs; Representation Invariants (RI)
July 6 Abstraction Functions (AFs)
Materials Code Example
July 8 Testing
July 11 More Testing; Modular Design
Materials EJ 49, 50, 17, 52; PP 41
July 13 Modular Design and Style
July 15 Equality and Hashcodes
EJ 10, 11
July 18 Exceptions
PP 25; EJ 69, 70, 73
July 20 Subtypes
EJ 40, 18, 19
July 22 More Subtypes; Ethics
July 25 Generics
EJ 28, 30
July 27 More Generics; Callbacks
July 29 Event-driven Design; HTML; TypeScript
Code Example (TS Introduction)
August 1 Intro to React
Code Example
August 3 More React
August 5 Debugging
August 8 Design Patterns
August 10 HW9, Spark Java, and Fetch
Code Example
August 12 More Design Patterns
August 15 System Integration
August 17 Accessibility (half lecture)
August 19 Course Wrap-up