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

January
MondayTuesdayWednesdayThursdayFriday
04
Lecture
Introduction; read PP: prefaces (both), 1-3, 6, 38
slides
05 06
Lecture
Reasoning about code I
slides, lecture notes
07
Section
Intro to Reasoning About Code
slides, worksheet (solutions)
08
Lecture
Reasoning about code II - Loops
slides, lecture notes
11
Lecture
Program logic - loops (no new notes or slides)
12
23:00 hw1 due (assertions, proofs)
13
Lecture
Loops (concl.); Specifications, PP: 7, 23
slides, related notes
14
Section
Java tools + hw3
slides
15
Lecture
Specifications (cont.)
18
MLK Day
19
23:00 hw2 due (loop development)
20
Lecture
Specifications (concl.); Data Abstractions (ADTs), EJ: 17, 50, 56
ADT slides
21
Section
Abstraction, testing, hw4 & junit
slides, worksheet
23:00 hw3 due (Java review / logistics)
22
Lecture
ADTs (concl); Rep Invariants (RI); PP 25
RI slides, related notes
25
Lecture
Rep Invariants (RI, concl.); Abstraction Functions (AF)
Slides: AF
26 27
Lecture
Testing, PP: 41, 51
testing
28
23:00 hw4 due (implement / test)
29
Lecture
Testing (concl.); Module design and general style notes; EJ: 12, 15-17, 51-52, 57-58, 62, 68; PP: 5, 7-10, 28, 40, 44
slides

February
MondayTuesdayWednesdayThursdayFriday
01
Lecture
General guidelines (concl.); Identity & equality, hashCode; EJ: 10-11, 13-14
slides
02 03
Lecture
equals/hashCode
04
Section
Graph implementation, equals/hashcode & method dispatch
slides, worksheet (sample solution)
23:00 hw5-1 due (graph ADT design/test)
05
Lecture
hashCode (concl.); Exceptions & assertions; EJ: 49, 69-74, 77
slides
08
Lecture
Exceptions (concl.)
09 10
Lecture
Subtypes and subclasses (start); EJ: 18-20, 22-23, 40, 64
slides
11
Section
hw6 data files and parsing
slides, worksheet (sample solution)
23:00 hw5-2 due (graph ADT implementation)
12
Lecture
Subtypes (concl.); Generics (start); EJ: 26-31
slides, code
15
President's Day
16 17
Lecture
Generics (cont.)
18
Section
Dijkstra's algorithm; Model-View-Controller, hw7
slides, handout, worksheet (sample solution)
23:00 hw6 due (social network)
19
Lecture
Generics (concl.); Callbacks, Events, and Listeners/Observers
slides, code
22
Lecture
HTML/JavaScript/TypeScript intro
slides, code, code zip, TypeScript Video
23 24
Lecture
Web pages, user interfaces, and React
UI/react slides, code (downloadable zip file)
25
Section
React, TS, hw8, & common React bugs
slides, code
23:00 hw7 due (generics, Dijkstra's, campus paths)
26
Lecture
JS/React (concl.); Debugging (start); PP: 20
slides

March
MondayTuesdayWednesdayThursdayFriday
01
Lecture
Debugging (concl.)
02 03
Lecture
HW9, Spark Java, Fetch
slides, code, (downloadable zip)
04
Section
hw9, react/ts, etc. Q&A (bring your questions - no new topics today)
23:00 hw8 due (JavaScript warmup)
05
Lecture
Design patterns 1; EJ: 1-4, 6-7
slides
08
Lecture
Design patterns 2
slides
09 10
Lecture
System integration
slides
11
Section
Design patterns & wrapup
slides, worksheet (solution)
23:00 hw9 due (GUI)
12
Lecture
Course wrapup
slides