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 3 Introduction; read PP: prefaces (both), 1-3, 6, 38
slides, zoom link
January 5 Reasoning about code I
slides, lecture notes, zoom link
January 7 Reasoning about code II - Loops
slides, lecture notes, zoom link
January 10 Program logic - loops (no new notes or slides)
January 12 Loops (concl.); Specifications, PP: 7, 23
slides, related notes
January 14 Specifications (cont.), notes (same as last time)
January 19 Specifications (concl.); Data Abstractions (ADTs), EJ: 17, 50, 56
slides
January 21 ADTs (concl); Rep Invariants (RI); PP 25
RI slides, related notes
January 24 Rep Invariants (RI, concl.); Abstraction Functions (AF); start testing if time
AF slides
January 26 Testing, PP: 41, 51
slides
January 28 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
January 31 General guidelines (concl.); Identity & equality, hashCode; EJ: 10-11, 13-14
slides
February 2 equals/hashCode
February 4 hashCode (concl.); Exceptions & assertions; EJ: 49, 69-74, 77
slides
February 7 Exceptions (cont.)
February 9 exceptions (condl.); Subtypes and subclasses (start); EJ: 18-20, 22-23, 40, 64
slides
February 11 Subtypes (concl.)
February 14 Generics (start); EJ: 26-31
slides, code
February 16 Generics (concl.)
February 18 HTML/JavaScript/TypeScript intro
slides, code, code zip, TypeScript Video
February 23 React overview
slides, code (zip file)
February 25 Callbacks, Events, and Listeners/Observers
slides, code
February 28 Debugging; PP: 20
slides
March 2 HW9, Spark Java, Fetch
slides, code, (zip file)
March 4 Design patterns 1; EJ: 1-4, 6-7
slides
March 7 Design patterns 2
slides
March 9 System integration
slides
March 11 Project demos & course wrapup
slides