Date | Description |
---|---|
March 29 | Motivation (slides) and Administrivia (slides) |
March 31 |
Reasoning About Straight-Line Code: Hoare logic, forward & backward reasoning, and if statements (slides) PP 38 |
April 2 | Reasoning About Loops: invariants and examples (slides) |
April 5 | Writing Loops: concepts and an important example (slides) |
April 7 | More Writing Loops: interview question and wrap-up (slides) |
April 9 |
Specifications: overview, javadoc, comparison, and correctness (slides) PP 23 |
April 12 | Data Abstraction (ADTs): overview and Java examples (slides) |
April 14 |
Abstraction Functions (AFs): overview and an example (slides) Code Example |
April 16 |
Representation Invariants (RIs): overview and defensive programming (slides) EJ 49, 50, 17, 52 |
April 19 |
Testing: concepts and heuristics (slides) PP 41 |
April 21 | More Testing: examples, coverage, and tips (slides) |
April 23 | Module Design & Style: concepts, Java advice, and readability (slides) |
April 26 |
Identity, Equality, & Hashing: overview and Java details (slides) EJ 10, 11 |
April 28 | More Identity, Equality, & Hashing: review, mutability, and hashing (slides) |
April 30 |
Exceptions & Assertions: concepts, assertions, mechanics, design, and alternatives (slides) PP 25 |
May 3 |
Subtypes: concepts and (non-)examples (slides) EJ 40, 18, 19 |
May 5 | More Subtypes: Java details, equals redux, and alternatives (slides) |
May 7 | Debugging: concepts and tips (slides) |
May 10 |
Generics: overview, methods, and subtyping (slides) EJ 28, 30 |
May 12 |
More Generics: bounds, wildcards, arrays, type erasure, and advice (slides) Code Example |
May 14 |
Callbacks, Events, & Event-Driven Programs: callbacks & events and event-driven programs (slides) Code Examples |
May 17 |
User Interfaces & Javascript: user interfaces, Javascript, and JS classes (slides) Code Examples |
May 19 |
Modern Web UIs: original, ES6, and TypeScript (slides) Code Examples |
May 21 |
Javascript & React: overview and state (slides) Code Examples |
May 24 |
Basic Servers & Clients: overview and http (slides) Code Examples |
May 26 |
HTTP Servers & Web Clients: Spark and Web Requests (slides) Code Examples |
May 28 | Design Patterns: overview, factories, and builders (slides) |
June 2 | More Design Patterns: sharing, structural, and behavioral (slides) |
June 4 | Real World Anti-Patterns (slides) |