Schedule

See the lectures page for a fine-grained list of chapter sections and online readings that contain core material for this course, as well as reminders of post-lecture tasks. Remember: it is best to skim the required reading before its associated lecture.

Day Date Lecture Discussion Work due
Mon Aug 26
Tue Aug 27 Lecture 1: Overview, static typing
[slides, code]
Discussion 1: Introductions and debugging
[slides, handout solution]
Wed Aug 28
Thu Aug 29 Lecture 2: Objects
[slides, code]
Fri Aug 30 Discussion activity 1
Mon Sep 2 Labor Day
Tue Sep 3 Lecture 3: Abstraction, encapsulation
[preview slides, preview code]
Discussion 2: Object diagrams and arrays
[slides, handout solution]
Q1 (10am)
Wed Sep 4 A1
Thu Sep 5 Lecture 4: Specifications, testing
[slides, code]
Fri Sep 6 Discussion activity 2
Mon Sep 9 Q2
Tue Sep 10 Lecture 5: Interfaces, subtyping
[slides, code]
Discussion 3: Designing and testing classes
[slides, handout solution]
Wed Sep 11
Thu Sep 12 Lecture 6: Inheritance, dynamic dispatch, equality
[slides, code]
Syllabus quiz
Fri Sep 13 Discussion activity 3
Mon Sep 16 Q3
Tue Sep 17 Lecture 7: Exceptions, I/O
[slides, code]
Discussion 4: Prelim 1 review
[question slides, answer slides]
Wed Sep 18
Thu Sep 19 Lecture 8: Bags, Generics
[slides, code]
Prelim 1
Fri Sep 20 Discussion activity 4
Mon Sep 23 A2, Q4
Tue Sep 24 Lecture 9: Linked structures
[slides, code]
Discussion 5: Java collections
[slides, handout solution]
Wed Sep 25
Thu Sep 26 Lecture 10: Ordered collections
[slides, code]
Fri Sep 27 Discussion activity 5
Mon Sep 30 Q5
Tue Oct 1 Lecture 11: Efficiency
[slides, code]
Discussion 6: Iterators
[slides, handout solution, code]
Wed Oct 2
Thu Oct 3 Lecture 12: Recursion
[slides, code]
Fri Oct 4 A3, Discussion activity 6
Mon Oct 7 Q6
Tue Oct 8 Lecture 13: Trees I
[slides, code]
Discussion 7: Binary search trees
[handout solution]
Wed Oct 9
Thu Oct 10 Lecture 14: Trees II
[slides, code preview, binary search]
Fri Oct 11 Discussion activity 7
Oct 12–15 Fall break
Wed Oct 16
Thu Oct 17 Lecture 15: Loop invariants
[slides preview, code]
Fri Oct 18
Mon Oct 21 Q7
Tue Oct 22 Lecture 16: Sorting
[slides, code]
Discussion 8: Loop invariants
[slides, handout solution, code]
Wed Oct 23
Thu Oct 24 Lecture 17: Hash tables
[slides]
Fri Oct 25 A4, Discussion activity 8
Mon Oct 28 Q8
Tue Oct 29 Lecture 18: Graphical user interfaces
[slides, code]
Discussion 9: Hash tables
[handout solution, code]
Wed Oct 30
Thu Oct 31 Lecture 19: Event-driven programming
[slides, code]
Fri Nov 1 Discussion activity 9
Mon Nov 4 Q9
Tue Nov 5 Lecture 20: Concurrency
[preview slides, code]
Discussion 10: Shared buffers
[slides, handout solution, code]
Wed Nov 6
Thu Nov 7 Lecture 21: Synchronization
[slides, code]
Fri Nov 8 Discussion activity 10
Mon Nov 11 Q10
Tue Nov 12 Lecture 22: Graphs
[preview slides, code]
Discussion 11: Synchronization
[slides, handout solution, code]
A5
Wed Nov 13
Thu Nov 14 Lecture 23: Graph traversals
[preview slides, code]
Fri Nov 15 Discussion activity 11
Mon Nov 18 Q11
Tue Nov 19 Lecture 24: Shortest paths
[preview slides, code]
Discussion 12: Prelim 2 review
[question and answer slides]
Wed Nov 20
Thu Nov 21 Lecture 25: Graph exercise
[slides, activity, solution]
Fri Nov 22 Discussion activity 12
Mon Nov 25 Q12
Tue Nov 26 Lecture 26: Software Engineering
[slides, code]
Prelim 2
Nov 27–Dec 1 Thanksgiving break
Mon Dec 2
Tue Dec 3 Lecture 27: Heaps
[preview slides, code]
Discussion 13: Heaps
[slides, handout solution]
Wed Dec 4
Thu Dec 5 Lecture 28: The Java ecosystem
Fri Dec 6 Discussion activity 13
Mon Dec 9 A6, Q13
Sat Dec 14 Final exam (2:00pm)