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 21 Motivation; Reasoning about Straight-line Code
EJ: preface; PP: preface, 1-3, 5, 6
June 23 Reasoning about Conditionals and Loops
PP 38
June 26 Reasoning Wrap-up
June 28 Specifications
PP 7, 23
June 30 ADTs; Representation Invariants (RI)
July 3 Rep Exposure; Abstraction Functions (AFs)
Code Examples
July 5 Testing
July 7 More Testing; Modular Design
Materials EJ 49, 50, 17, 52; PP 41
July 10 Modular Design; Style
July 12 Software Tools
July 14 Equality and Hashcodes
EJ 10, 11
July 17 Exceptions
PP 25; EJ 69, 70, 73
July 19 Subtypes
EJ 40, 18, 19
July 21 More Subtypes; Ethics
July 24 Generics
EJ 28, 30
July 26 More Generics; Callbacks
July 28 Event-driven Design; HTML; TypeScript
Code Examples, TS Introduction
July 31 Intro to React
Code Examples
August 2 More React
August 4 Even More React; Debugging
August 7 Design Patterns
August 9 HW9 and Servers
Code Examples
August 11 More Design Patterns
August 14 System Stuff
August 16 Ethics + Accessibility (half lecture)
August 18 Course Wrap-up