Date | Description |
---|---|
March 30 | Motivation and Administrivia (slides) |
April 1 |
Reasoning about straight line code: Hoare logic, reasoning, if statements (slides: recorded and live) PP 38; more lecture notes (optional) |
April 3 | Reasoning about loops: loop invariants and examples (slides: recorded and live) |
April 6 |
Writing Loops: concepts and an important example (slides: recorded and live) more lecture notes (optional) |
April 8 | (Optional) Writing Loops: an interview question (slides) |
April 10 |
Specifications: overview, how to, and comparisons (slides: recorded and live) PP 23 |
April 13 | Data Abstraction (ADTs): overview and Java examples (slides: recorded and live) |
April 15 |
Abstraction Functions: overview and in-depth example (slides: recorded and live) Code Examples |
April 17 |
Representation Invariants: overview and defensive programming tips (slides: recorded and live) EJ 49, 50, 17, 52 |
April 20 |
Testing: overview and heuristics (slides: recorded and live) PP 41 |
April 22 | More Testing: code coverage and tools & tips (slides) |
April 24 | Module Design & Style: concepts, Java specifics, and readability (slides) |
April 27 |
Identity, Equality, & Hashing I: overview and Java details (slides) EJ 10, 11 |
April 29 | Identity, Equality, & Hashing II: equals with mutability and hashCode (slides: recorded and live) |
May 1 |
Exceptions & Assertions: concepts, Java assertions, Java exceptions, exception design / style, special values, and finally blocks (slides: recorded and live) PP 25 |
May 4 | Debugging: concepts and tips (slides) |
May 6 |
Subtypes I: overview (slides, first 9 slides only) EJ 40, 18, 19 |
May 8 |
Subtypes II: examples, Java details, and advice (slides) EJ 40, 18, 19 |
May 11 |
Generics I: generic types, generic methods, subtyping, and bounds (slides) EJ 28, 30 |
May 13 | Generics II: wildcards, arrays, type erasure, and final thoughts (slides: recorded and live) |
May 15 |
Callbacks, Events, & Event-Driven Programs: callbacks and events, event-driven programs, and a detailed example (slides) Code Examples |
May 18 |
User Interfaces & JavasScript: UIs, JS, and classes (slides) Code Examples |
May 20 |
Modern Web UIs: Classic, ES6, TypeScript, React pt1, React pt2 (slides: recorded and live) Code Examples |
May 22 | JS / React Q & A (slides: live) |
May 27 |
HTTP Servers & Web Clients: overview, HTTP protocol, Spark Java, web requests (slides) Code Examples |
May 29 | HTTP Servers & Web Clients Q & A |
June 1 |
Design Patterns I: overview, factories, and builders (slides) EJ 1, 2, 4 |
June 3 | Design Patterns II: sharing, structural, behavioral (slides) |
June 5 | Real-World Patterns |