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 (concl.); II - Loops (start)
slides, lecture notes
January 9 Program logic - loops (no new notes or slides)
January 11 Loops (concl.); Specifications, PP: 7, 23
slides, related notes
January 13 Specifications (cont.)
January 18 Specifications (concl.); Start Data Abstractions (ADTs), EJ: 17, 50, 56
slides
January 20 ADTs (concl); Rep Invariants (RI); PP 25
RI slides, related notes
January 23 Rep Invariants (concl.);
January 25 Abstraction Functions (AF); Testing (start), PP: 41, 51
AF slides, related notes, testing slides
January 27 Testing (concl.)
January 30 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 Identity & equality, hashCode; EJ: 10-11, 13-14
slides
February 3 hashCode (concl.); Exceptions & assertions; EJ: 49, 69-74, 77
slides
February 6 Exceptions (cont.)
February 8 exceptions (condl.); Subtypes and subclasses (start); EJ: 18-20, 22-23, 40, 64
slides
February 10 Subtypes (concl.)
February 13 Generics (start); EJ: 26-31
slides, code
February 15 Generics (cont.)
February 17 Generics (concl.); HTML/JavaScript/TypeScript intro
slides, code, code zip, TypeScript Video
February 22 React overview
slides, code (code zip file)
February 24 Callbacks, Events, and Listeners/Observers
slides, code
February 27 Debugging; PP: 20
slides
March 1 HW9, Spark Java, Fetch
slides, code, (zip file)
March 3 Design patterns 1; EJ: 1-4, 6-7
slides
March 6 Design patterns 2
slides
March 8 System integration
slides
March 10 Project demos & course wrapup
slides