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
September 28 Reasoning about Straight-line Code
PP 38
September 30 Reasoning about Loops
October 3 Writing Loops
October 5 Reasoning Wrap-up
October 7 Specifications
PP 23
October 10 Data Abstraction (ADTs)
October 12 Abstraction Functions (AFs)
October 14 Representation Invariants (RIs)
EJ 49, 50, 17, 52
October 17 Testing
PP 41
October 19 More Testing
October 21 Identity, Equality, and Hashing
EJ 10, 11
October 24 Exceptions and Assertions
October 26 Module Design and Style
PP 25
October 28 More Module Design (same slides)
October 31 Subtypes
EJ 40, 18, 19
November 2 More Subtypes
November 7 Generics
EJ 28, 30
November 9 More Generics
November 14 User Interfaces and Event-Driven Programming
Code Examples
November 16 Javascript
November 18 ES6 and TypeScript
Code Examples
November 21 JSX and React
Code Examples
November 28 Basic Servers and Clients
Code Examples
November 30 HTTP Servers and Web Clients
Code Examples
December 2 Debugging
December 5 Design Patterns
December 7 More Design Patterns
December 9 Startups