Date | Description |
---|---|
September 30 | Introduction (slides) and Administrivia (slides) |
October 2 |
Reasoning About Straight-Line Code: Hoare logic, forward & backward reasoning, and if statements (slides) PP 38; more lecture notes (optional) |
October 5 | Reasoning About Loops: invariants and examples (slides) |
October 7 |
Writing Loops: concepts and an important example (slides) more lecture notes (optional) |
October 9 | More Writing Loops: interview question and wrap-up (slides) |
October 12 |
Specifications: overview, javadoc, comparison, and optionally correctness (slides) PP 23 |
October 14 | Data Abstractions / ADTs: overview and Java examples (slides) |
October 16 |
Abstraction Functions: overview and an example (slides) Code Example |
October 19 |
Representation Invariants: overview and defensive programming tips (slides) EJ 49, 50, 17, 52 |
October 21 |
Testing: concepts and heuristics (slides) PP 41 |
October 23 | More Testing: more examples, coverage, and tools & tips (slides) |
October 26 | Module Design & Style: concepts, Java advice, and readability (slides) |
October 28 |
Identity, Quality & Hashing: overview and Java details (slides) EJ 10, 11 |
October 30 | More Identity, Quality & Hashing: review, mutability, and hashCode (slides) |
November 2 |
Exceptions & Assertions: concepts, assertions, mechanics, design, and alternatives (slides) PP 25 |
November 4 |
Subtypes: concepts and (non-)examples (slides) EJ 40, 18, 19 |
November 6 | More Subtypes: Java details, equals redux, and alternatives (slides) |
November 9 |
Generics: overview, methods, and subtyping (slides) EJ 28, 30 |
November 13 | More Generics: bounds, wildcards, arrays, type erasure, and advice (slides) |
November 16 |
Callbacks, Events & Event-Driven Programs: callbacks & events and event-driven programs (slides) Code Examples |
November 18 |
User Interfaces & Javascript: user interfaces, Javascript, and JS classes (slides) Code Examples |
November 20 |
Modern Web UIs: original, ES6, and TypeScript (slides) Code Examples |
November 23 |
JS & React: overview and state management (slides) Code Examples |
November 25 |
Extra Section Topic: HW8 (slides) Code Examples |
November 30 |
Basic Serviers & Clients (slides) Code Examples |
December 2 |
HTTP Serviers & Web Clients: HTTP, Spark, and Web Requests (slides) Code Examples |
December 4 | Debugging: concepts and tips (slides) |
December 7 |
Design Patterns: overview, factories, and builders (slides) EJ 1, 2, 4 |
December 9 | More Design Patterns: sharing, structural, and behavioral (slides) |
December 11 | Real World (Anti-)Patterns (slides) |