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

June
MondayTuesdayWednesdayThursdayFriday
21
09:30-10:30 OH (Katherine Murphy)
Zoom
13:10-14:10 Lecture
* *
Motivation (slides) Live lecture slides
23:00-00:00 OH (Owen Daley)
Zoom
22
12:00-13:00 OH (Owen Daley)
Zoom
23
01:00-03:00 OH (Ege Caglar)
Zoom
10:00-11:00 OH (Leah Perlmutter)
Zoom
13:00 HW0 due
13:10-14:10 Lecture
* *
Reasoning About Straight-Line Code: Hoare Logic + if statements (slides)
PP (topic 38)
24
Section
Reasoning about code (slides)
worksheet (solution)
10:00-11:00 OH (Josie Thompson)
Zoom
25
08:00-09:00 OH (David Xu)
Zoom
13:10-14:10 Lecture
* *
Reasoning About Loops: Loops + examples + HTML (slides) Watch party 10:30 pm
28
09:30-10:30 OH (Katherine Murphy)
Zoom
13:10-14:10 Lecture
* *
Writing Loops: important example (1, 2) (slides)
23:00-00:00 OH (Owen Daley)
Zoom
29
12:00-13:00 OH (Owen Daley)
Zoom
30
01:00-03:00 OH (Ege Caglar)
Zoom
10:00-11:00 OH (Leah Perlmutter)
Zoom
13:10-14:10 Lecture
* *
Loops wrap up (slides) + Specifications: overview, javadoc, comparison, and correctness (slides) + Section video
PP (topic 23)
23:00 HW1 due
01
Section
Java tools (slides)
10:00-11:00 OH (Josie Thompson)
Zoom
02
08:00-09:00 OH (David Xu)
Zoom
13:10-14:10 Lecture
* *
Data Abstraction (ADTs): Overview and Java examples (slides)

July
MondayTuesdayWednesdayThursdayFriday
05
Independence Day
06
12:00-13:00 OH (Owen Daley)
Zoom
23:00 HW3 due
07
01:00-03:00 OH (Ege Caglar)
Zoom
10:00-11:00 OH (Leah Perlmutter)
Zoom
13:10-14:10 Lecture
* *
Abstraction Functions (AFs): overview and an example (slides) + JavaScript + code example (slides)
08
Section
AFs & JUnit (slides)
Junit Demo Code
10:00-11:00 OH (Josie Thompson)
Zoom
09
08:00-09:00 OH (David Xu)
Zoom
13:10-14:10 Lecture
* *
Representation Invariants (RIs): Overview and defensive programming (slides)
EJ (topic 49, 50, 17, 52)
12
09:30-10:30 OH (Katherine Murphy)
Zoom
13:10-14:10 Lecture
* *
JavaScript part 2 (code example) + Testing: concepts and heuristics (slides)
PP (topic 41)
23:00-00:00 OH (Owen Daley)
Zoom
13
12:00-13:00 OH (Owen Daley)
Zoom
14
01:00-03:00 OH (Ege Caglar)
Zoom
10:00-11:00 OH (Leah Perlmutter)
Zoom
13:10-14:10 Lecture
* *
More Testing: examples, coverage, and tips (slides) + Section video (hw5 part 1)
23:00 HW4 due
15
Section
Graphs, testing, & rep exposure (slides)
Test worksheet (solution) ADT Worksheet
10:00-11:00 OH (Josie Thompson)
Zoom
16
08:00-09:00 OH (David Xu)
Zoom
13:10-14:10 Lecture
* *
Module Design & Style: concepts, Java advice, and readability (slides) + Modular Java Script (slides, code)
19
09:30-10:30 OH (Katherine Murphy)
Zoom
13:10-14:10 Lecture
* *
Callbacks, Events, & Event-Driven Programs: callbacks & events and event-driven programs (slides) + JavaScript Wrap up (slides)
Code Examples
23:00-00:00 OH (Owen Daley)
Zoom
20
12:00-13:00 OH (Owen Daley)
Zoom
21
01:00-03:00 OH (Ege Caglar)
Zoom
10:00-11:00 OH (Leah Perlmutter)
Zoom
13:10-14:10 Lecture
* *
Identity, Equality, & Hashing: overview and Java details (slides) + React part 1 (slides) + hw5 part 2 (video 1, 2)
EJ (topics 10, 11) + Code Example
22
Section
Equals & hashCode (slides)
worksheet (Rep Exposure - Equals/Hashcode) solution(Rep Exposure - Equals/Hashcode)
10:00-11:00 OH (Josie Thompson)
Zoom
23
08:00-09:00 OH (David Xu)
Zoom
26
09:30-10:30 OH (Katherine Murphy)
Zoom
13:10-14:10 Lecture
* *
Exceptions & Assertions: concepts, assertions, mechanics, design, and alternatives (slides)
PP (topic 25)
23:00-00:00 OH (Owen Daley)
Zoom
27
12:00-13:00 OH (Owen Daley)
Zoom
28
01:00-03:00 OH (Ege Caglar)
Zoom
10:00-11:00 OH (Leah Perlmutter)
Zoom
13:10-14:10 Lecture
* *
Subtypes: concepts and (non-)examples (slides) + Section video HW6 (1, 2, 3)
EJ (topics 40, 18, 19) Code Example
29
Section
Parsing data files (slides)
worksheet (solution) CSV Parser Demo Code
10:00-11:00 OH (Josie Thompson)
Zoom
30
08:00-09:00 OH (David Xu)
Zoom
13:10-14:10 Lecture
* *
Subtypes: Java details, equals redux, and alternatives (slides)

August
MondayTuesdayWednesdayThursdayFriday
02
09:30-10:30 OH (Katherine Murphy)
Zoom
13:10-14:10 Lecture
* *
Generics: overview, methods, and subtyping (slides)
EJ (topic 28, 30) Code Example
23:00-00:00 OH (Owen Daley)
Zoom
03
12:00-13:00 OH (Owen Daley)
Zoom
04
01:00-03:00 OH (Ege Caglar)
Zoom
10:00-11:00 OH (Leah Perlmutter)
Zoom
13:10-14:10 Lecture
* *
More Generics: wildcards, arrays, type erasure, and advice (slides) + Section video hw 7
Code Example
23:00 HW6 due
05
Section
Dijkstra's algorithm (slides)
worksheet (solution)
10:00-11:00 OH (Josie Thompson)
Zoom
06
08:00-09:00 OH (David Xu)
Zoom
13:10-14:10 Lecture
* *
Basic Servers & Clients: Overview and http (slides)
Code Example
09
09:30-10:30 OH (Katherine Murphy)
Zoom
23:00-00:00 OH (Owen Daley)
Zoom
10
12:00-13:00 OH (Owen Daley)
Zoom
11
01:00-03:00 OH (Ege Caglar)
Zoom
10:00-11:00 OH (Leah Perlmutter)
Zoom
13:10-14:10 Lecture
* *
Debugging: concepts and tips (slides)
12
Section
Json & Fetch (slides)
Code Examples
10:00-11:00 OH (Josie Thompson)
Zoom
23:00 HW7 due
13
08:00-09:00 OH (David Xu)
Zoom
13:10-14:10 Lecture
* *
Design Patterns: overview (slides) + HW9 Video
EJ (topic 1, 2, 4)
16
09:30-10:30 OH (Katherine Murphy)
Zoom
13:10-14:10 Lecture
* *
More Design Patterns: factories, and builders (slides)
EJ (topic 1, 2, 4)
23:00-00:00 OH (Owen Daley)
Zoom
17
10:00-11:00 OH (Josie Thompson)
Zoom
12:00-13:00 OH (Owen Daley)
Zoom
16:00-17:00 OH (Josie Thompson)
Zoom
18
01:00-03:00 OH (Ege Caglar)
Zoom
10:00-11:00 OH (Leah Perlmutter)
Zoom
13:10-14:10 Lecture
* *
More Design Patterns: sharing, structural, behavioral, and Real World Anti-Patterns (slides)
EJ (topic 1, 2, 4)
19
Section
HW9 Help
1:00-2:00 OH (Ege Caglar)
Zoom
10:00-11:00 OH (Josie Thompson)
Zoom
18:00-19:00 OH (Josie Thompson)
Zoom
23:00 HW9 due
20
08:00-09:00 OH (David Xu)
Zoom
13:10-14:10 Lecture
* *
OH