Schedule

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

March
MondayTuesdayWednesdayThursdayFriday
29
Lecture
Motivation (slides) and Administrivia (slides)
30 31
Lecture
Reasoning About Straight-Line Code: Hoare logic, forward & backward reasoning, and if statements (slides)
PP 38
15:30-17:30 OH – Helena Stafford
17:00 HW0 due
17:00-18:00 OH – Betty Park
01
Section
HW1: reasoning about code (slides)
worksheet (solution)
13:30-15:30 OH – Samuel Berensohn
17:00-19:00 OH – Elijah Greisz
02
Lecture
Reasoning About Loops: invariants and examples (slides)
12:30-13:30 OH – Lia Hiscock
20:00-21:00 OH – Ronald Widjaja

April
MondayTuesdayWednesdayThursdayFriday
05
Lecture
Writing Loops: concepts and an important example (slides)
9:00-11:00 OH – Harshal Desai
12:00-14:00 OH – Nancy Li
18:00-19:00 OH – Bella Rose & Josie Thompson
23:00 HW1 due
06
12:00-13:00 OH – Kellie Gui
14:00-15:30 OH – Andrew Gies
17:00-19:00 OH – Ardi Madadi & Ege Caglar
07
Lecture
More Writing Loops: interview question and wrap-up (slides)
15:30-17:30 OH – Helena Stafford
17:00-18:00 OH – Betty Park
08
Section
HW3: Java tools (slides)
13:30-15:30 OH – Samuel Berensohn
17:00-18:00 OH – Bryan Lim
17:00-19:00 OH – Elijah Greisz
09
Lecture
Specifications: overview, javadoc, comparison, and correctness (slides)
PP 23
12:30-13:30 OH – Lia Hiscock
20:00-21:00 OH – Ronald Widjaja
12
Lecture
Data Abstraction (ADTs): overview and Java examples (slides)
9:00-11:00 OH – Harshal Desai
12:00-14:00 OH – Nancy Li
18:00-19:00 OH – Bella Rose & Josie Thompson
13
12:00-13:00 OH – Kellie Gui
14:00-15:30 OH – Andrew Gies
17:00-19:00 OH – Ardi Madadi & Ege Caglar
23:00 HW2 due
14
Lecture
Abstraction Functions (AFs): overview and an example (slides)
Code Example
15:30-17:30 OH – Helena Stafford
17:00-18:00 OH – Betty Park
15
Section
HW4: AFs & JUnit (slides)
worksheet and Code Example
13:30-15:30 OH – Samuel Berensohn
17:00-18:00 OH – Bryan Lim
17:00-19:00 OH – Elijah Greisz
23:00 HW3 due
16
Lecture
Representation Invariants (RIs): overview and defensive programming (slides)
EJ 49, 50, 17, 52
12:30-13:30 OH – Lia Hiscock
20:00-21:00 OH – Ronald Widjaja
19
Lecture
Testing: concepts and heuristics (slides)
PP 41
9:00-11:00 OH – Harshal Desai
12:00-14:00 OH – Nancy Li
18:00-19:00 OH – Bella Rose & Josie Thompson
20
12:00-13:00 OH – Kellie Gui
14:00-15:30 OH – Andrew Gies
17:00-19:00 OH – Ardi Madadi & Ege Caglar
21
Lecture
More Testing: examples, coverage, and tips (slides)
15:30-17:30 OH – Helena Stafford
17:00-18:00 OH – Betty Park
22
Section
HW5 pt1: graphs, testing, & rep exposure (slides)
worksheet (solution)
13:30-15:30 OH – Samuel Berensohn
17:00-18:00 OH – Bryan Lim
17:00-19:00 OH – Elijah Greisz
23:00 HW4 due
23
Lecture
Module Design & Style: concepts, Java advice, and readability (slides)
12:30-13:30 OH – Lia Hiscock
18:00 Quiz 1 begins
20:00-21:00 OH – Ronald Widjaja
26
Lecture
Identity, Equality, & Hashing: overview and Java details (slides)
EJ 10, 11
9:00-11:00 OH – Harshal Desai
12:00-14:00 OH – Nancy Li
18:00-19:00 OH – Bella Rose & Josie Thompson
27
12:00-13:00 OH – Kellie Gui
14:00-15:30 OH – Andrew Gies
17:00-19:00 OH – Ardi Madadi & Ege Caglar
28
Lecture
More Identity, Equality, & Hashing: review, mutability, and hashing (slides)
15:30-17:30 OH – Helena Stafford
17:00-18:00 OH – Betty Park
29
Section
HW5 pt2, equals & hashCode (slides)
worksheets: rep exposure (solution) and equals & hashCode (solution)
13:30-15:30 OH – Samuel Berensohn
17:00-18:00 OH – Bryan Lim
17:00-19:00 OH – Elijah Greisz
23:00 HW5 pt1 due
30
Lecture
Exceptions & Assertions: concepts, assertions, mechanics, design, and alternatives (slides)
PP 25
12:30-13:30 OH – Lia Hiscock
18:00 Quiz 2 begins
20:00-21:00 OH – Ronald Widjaja

May
MondayTuesdayWednesdayThursdayFriday
03
9:00-11:00 OH – Harshal Desai
12:00-14:00 OH – Nancy Li
18:00-19:00 OH – Bella Rose & Josie Thompson
04
12:00-13:00 OH – Kellie Gui
14:00-15:30 OH – Andrew Gies
17:00-19:00 OH – Ardi Madadi & Ege Caglar
05
Lecture
More Subtypes: Java details, equals redux, and alternatives (slides)
15:30-17:30 OH – Helena Stafford
17:00-18:00 OH – Betty Park
06
Section
HW6: parsing data files (slides)
worksheet (solution)
13:30-15:30 OH – Samuel Berensohn
17:00-18:00 OH – Bryan Lim
17:00-19:00 OH – Elijah Greisz
23:00 HW5 pt2 due
07
Lecture
Debugging: concepts and tips (slides)
12:30-13:30 OH – Lia Hiscock
18:00 Quiz 3 begins
20:00-21:00 OH – Ronald Widjaja
10
Lecture
Generics: overview, methods, and subtyping (slides)
EJ 28, 30
9:00-11:00 OH – Harshal Desai
12:00-14:00 OH – Nancy Li
18:00-19:00 OH – Bella Rose & Josie Thompson
11
12:00-13:00 OH – Kellie Gui
14:00-15:30 OH – Andrew Gies
17:00-19:00 OH – Ardi Madadi & Ege Caglar
12
Lecture
More Generics: bounds, wildcards, arrays, type erasure, and advice (slides)
Code Example
15:30-17:30 OH – Helena Stafford
17:00-18:00 OH – Betty Park
13
Section
HW7: Dijkstra's algorithm (slides)
worksheet (solution)
13:30-15:30 OH – Samuel Berensohn
17:00-18:00 OH – Bryan Lim
17:00-19:00 OH – Elijah Greisz
23:00 HW6 due
14
Lecture
Callbacks, Events, & Event-Driven Programs: callbacks & events and event-driven programs (slides)
Code Examples
12:30-13:30 OH – Lia Hiscock
18:00 Quiz 4 begins
20:00-21:00 OH – Ronald Widjaja
17
Lecture
User Interfaces & Javascript: user interfaces, Javascript, and JS classes (slides)
Code Examples
9:00-11:00 OH – Harshal Desai
12:00-14:00 OH – Nancy Li
18:00-19:00 OH – Bella Rose & Josie Thompson
18
12:00-13:00 OH – Kellie Gui
14:00-15:30 OH – Andrew Gies
17:00-19:00 OH – Ardi Madadi & Ege Caglar
19
Lecture
Modern Web UIs: original, ES6, and TypeScript (slides)
Code Examples
15:30-17:30 OH – Helena Stafford
17:00-18:00 OH – Betty Park
20
Section
HW8: TypeScript & React (slides)
Code Examples
13:30-15:30 OH – Samuel Berensohn
17:00-18:00 OH – Bryan Lim
17:00-19:00 OH – Elijah Greisz
23:00 HW7 due
21
Lecture
Javascript & React: overview and state (slides)
Code Examples
12:30-13:30 OH – Lia Hiscock
18:00 Quiz 5 begins
20:00-21:00 OH – Ronald Widjaja
24
Lecture
Basic Servers & Clients: overview and http (slides)
Code Examples
9:00-11:00 OH – Harshal Desai
12:00-14:00 OH – Nancy Li
18:00-19:00 OH – Bella Rose & Josie Thompson
25
12:00-13:00 OH – Kellie Gui
14:00-15:30 OH – Andrew Gies
17:00-19:00 OH – Ardi Madadi & Ege Caglar
26
Lecture
HTTP Servers & Web Clients: Spark and Web Requests (slides)
Code Examples
15:30-17:30 OH – Helena Stafford
17:00-18:00 OH – Betty Park
27
Section
HW9: JSON & Fetch (slides)
Code Examples
13:30-15:30 OH – Samuel Berensohn
17:00-18:00 OH – Bryan Lim
17:00-19:00 OH – Elijah Greisz
23:00 HW8 due
28
Lecture
Design Patterns: overview, factories, and builders (slides)
12:30-13:30 OH – Lia Hiscock
18:00 Quiz 6 begins
20:00-21:00 OH – Ronald Widjaja
31
Memorial Day
01
12:00-13:00 OH – Kellie Gui
14:00-15:30 OH – Andrew Gies
17:00-19:00 OH – Ardi Madadi & Ege Caglar
02
Lecture
More Design Patterns: sharing, structural, and behavioral (slides)
15:30-17:30 OH – Helena Stafford
17:00-18:00 OH – Betty Park
03
Section
Final Review (slides)
worksheet (solution)
13:30-15:30 OH – Samuel Berensohn
17:00-18:00 OH – Bryan Lim
17:00-19:00 OH – Elijah Greisz
04
12:30-13:30 OH – Lia Hiscock
20:00-21:00 OH – Ronald Widjaja
23:00 HW9 due

June
MondayTuesdayWednesdayThursdayFriday
07 08
18:00 Final exam due
09 10 11