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
January 4 Introduction; read PP: prefaces (both), 1-3, 6, 38
slides
January 6 Reasoning about code I
slides, lecture notes
January 8 Reasoning about code II - Loops
slides, lecture notes
January 11 Program logic - loops (no new notes or slides)
January 13 Loops (concl.); Specifications, PP: 7, 23
slides, related notes
January 15 Specifications (cont.)
January 20 Specifications (concl.); Data Abstractions (ADTs), EJ: 17, 50, 56
ADT slides
January 22 ADTs (concl); Rep Invariants (RI); PP 25
RI slides, related notes
January 25 Rep Invariants (RI, concl.); Abstraction Functions (AF)
Slides: AF
January 27 Testing, PP: 41, 51
testing
January 29 Testing (concl.); Module design and general style notes; EJ: 12, 15-17, 51-52, 57-58, 62, 68; PP: 5, 7-10, 28, 40, 44
slides
February 1 General guidelines (concl.); Identity & equality, hashCode; EJ: 10-11, 13-14
slides
February 3 equals/hashCode
February 5 hashCode (concl.); Exceptions & assertions; EJ: 49, 69-74, 77
slides
February 8 Exceptions (concl.)
February 10 Subtypes and subclasses (start); EJ: 18-20, 22-23, 40, 64
slides
February 12 Subtypes (concl.); Generics (start); EJ: 26-31
slides, code
February 17 Generics (cont.)
February 19 Generics (concl.); Callbacks, Events, and Listeners/Observers
slides, code
February 22 HTML/JavaScript/TypeScript intro
slides, code, code zip, TypeScript Video
February 24 Web pages, user interfaces, and React
UI/react slides, code (downloadable zip file)
February 26 JS/React (concl.); Debugging (start); PP: 20
slides
March 1 Debugging (concl.)
March 3 HW9, Spark Java, Fetch
slides, code, (downloadable zip)
March 5 Design patterns 1; EJ: 1-4, 6-7
slides
March 8 Design patterns 2
slides
March 10 System integration
slides
March 12 Course wrapup
slides