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
June 21 Motivation (slides) Live lecture slides
June 23 Reasoning About Straight-Line Code: Hoare Logic + if statements (slides)
PP (topic 38)
June 25 Reasoning About Loops: Loops + examples + HTML (slides) Watch party 10:30 pm
June 28 Writing Loops: important example (1, 2) (slides)
June 30 Loops wrap up (slides) + Specifications: overview, javadoc, comparison, and correctness (slides) + Section video
PP (topic 23)
July 2 Data Abstraction (ADTs): Overview and Java examples (slides)
July 7 Abstraction Functions (AFs): overview and an example (slides) + JavaScript + code example (slides)
July 9 Representation Invariants (RIs): Overview and defensive programming (slides)
EJ (topic 49, 50, 17, 52)
July 12 JavaScript part 2 (code example) + Testing: concepts and heuristics (slides)
PP (topic 41)
July 14 More Testing: examples, coverage, and tips (slides) + Section video (hw5 part 1)
July 16 Module Design & Style: concepts, Java advice, and readability (slides) + Modular Java Script (slides, code)
July 19 Callbacks, Events, & Event-Driven Programs: callbacks & events and event-driven programs (slides) + JavaScript Wrap up (slides)
Code Examples
July 21 Identity, Equality, & Hashing: overview and Java details (slides) + React part 1 (slides) + hw5 part 2 (video 1, 2)
EJ (topics 10, 11) + Code Example
July 23 More Identity, Equality, & Hashing: review, mutability, and hashing (slides) + React State (slides)
Code Example
July 26 Exceptions & Assertions: concepts, assertions, mechanics, design, and alternatives (slides)
PP (topic 25)
July 28 Subtypes: concepts and (non-)examples (slides) + Section video HW6 (1, 2, 3)
EJ (topics 40, 18, 19) Code Example
July 30 Subtypes: Java details, equals redux, and alternatives (slides)
August 2 Generics: overview, methods, and subtyping (slides)
EJ (topic 28, 30) Code Example
August 4 More Generics: wildcards, arrays, type erasure, and advice (slides) + Section video hw 7
Code Example
August 6 Basic Servers & Clients: Overview and http (slides)
Code Example
August 9 Web Clients: Spark and Web Requests + Web Clients/React (HW9: fetch and Json) (slides)
Code Example
August 11 Debugging: concepts and tips (slides)
August 13 Design Patterns: overview (slides) + HW9 Video
EJ (topic 1, 2, 4)
August 16 More Design Patterns: factories, and builders (slides)
EJ (topic 1, 2, 4)
August 18 More Design Patterns: sharing, structural, behavioral, and Real World Anti-Patterns (slides)
EJ (topic 1, 2, 4)
August 20 OH