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
March 28 Motivation and Administrivia
March 30 Reasoning about Straight-line Code
PP 38
April 1 Reasoning about Loops
April 4 Writing Loops
April 6 Reasoning Wrap-up
April 8 Specifications
PP 23
April 11 Data Abstraction (ADTs)
April 13 Abstraction Functions (AFs)
Code Example
April 15 Representation Invariants (RIs)
EJ 49, 50, 17, 52
April 18 Testing
PP 41
April 20 More Testing
April 22 Identity, Equality, and Hashing
EJ 10, 11
April 25 More Equality and Hashing and Assertions
April 27 Exceptions
PP 25
April 29 Module Design and Style
May 2 Subtypes
EJ 40, 18, 19
May 4 More Subtypes
May 9 Generics
EJ 28, 30
May 11 More Generics
Code Example
May 13 User Interfaces and Event-Driven Programming
Code Examples
May 16 Javascript
May 18 ES6, TypeScript, JSX, and React
Code Examples
May 20 Debugging
May 23 Basic Servers and Clients
Code Examples
May 25 HTTP Servers and Web Clients
Code Examples
May 27 Design Patterns
June 1 More Design Patterns
June 3 Startups