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
Tue Aug 22 Lecture 1: Overview, structured programming
[slides, code]
Discussion 1: Introductions
[code]
Wed Aug 23
Thu Aug 24 Lecture 2: Objects
[slides, code]
Fri Aug 25 Discussion activity 1
Mon Aug 28 Quiz 1
Tue Aug 29 Lecture 3: Abstraction, encapsulation
[slides, code]
Discussion 2: Object diagrams, arrays Syllabus quiz
Wed Aug 30 A1
Thu Aug 31 Lecture 4: Specifications, testing
[slides, code]
Fri Sep 1 Discussion activity 2
Mon Sep 4 Labor Day
Tue Sep 5 Lecture 5: Interfaces, subtyping
[slides, code]
Discussion 3: Designing and testing classes
[code]
Quiz 2 (10am),
add deadline
Wed Sep 6
Thu Sep 7 Lecture 6: Inheritance, dynamic dispatch, equality
[slides, code]
Fri Sep 8 Discussion activity 3
Mon Sep 11 Quiz 3
Tue Sep 12 Lecture 7: Exceptions, I/O
[slides, code]
Discussion 4: Prelim review, I/O
[slides, staff solutions, I/O code]
Wed Sep 13
Thu Sep 14 Lecture 8: Bags, Generics
[slides, code]
A2
Fri Sep 15 Discussion activity 4
Mon Sep 18 Quiz 4
Tue Sep 19 Lecture 9: Linked Structures
[slides, code]
Discussion 5: Java collections
[code, slides]
Prelim 1
Wed Sep 20
Thu Sep 21 Lecture 10: Ordered collections
[slides, code]
Fri Sep 22 Discussion activity 5
Mon Sep 25
Tue Sep 26 Lecture 11: Efficiency
[slides]
Discussion 6: Iterators
[code, slides]
Quiz 5 (10am)
Wed Sep 27
Thu Sep 28 Lecture 12: Recursion
[slides, code]
Fri Sep 29 Discussion activity 6
Mon Oct 2 A3, Quiz 6
Tue Oct 3 Lecture 13: Trees I
[slides, code]
Discussion 7: Binary search trees
Wed Oct 4
Thu Oct 5 Lecture 14: Trees II
[slides, code]
Fri Oct 6 Discussion activity 7
Oct 7–10 Fall break
Wed Oct 11 (no discussion)
Thu Oct 12 Lecture 15: Loop invariants
[slides, code]
Fri Oct 13
Mon Oct 16 Quiz 8, drop deadline
Tue Oct 17 Lecture 16: Sorting
[slides, code]
Discussion 8: Loop invariants
[code, slides]
Wed Oct 18
Thu Oct 19 Lecture 17: Hash tables
[slides, code]
Fri Oct 20 Discussion activity 8
Mon Oct 23 A4, Quiz 9
Tue Oct 24 Lecture 18: Graphical User Interfaces
[slides, code]
Discussion 9: Hash tables
[code]
Wed Oct 25
Thu Oct 26 Lecture 19: Event-driven programming
[slides, code]
Fri Oct 27 Discussion activity 9
Mon Oct 30 Quiz 10
Tue Oct 31 Lecture 20: Concurrency
[slides, code]
Discussion 10: GUIs
[code]
Wed Nov 1
Thu Nov 2 Lecture 21: Synchronization
[slides, code]
Fri Nov 3 Discussion activity 10
(accepted Sat)
Mon Nov 6 Quiz 11
Tue Nov 7 Lecture 22: Graphs
[slides, code]
Discussion 11: Prelim review, synchronization
[slides, staff solutions]
Wed Nov 8 A5
Thu Nov 9 Lecture 23: Graph traversals
[slides, code]
Fri Nov 10 Discussion activity 11
Mon Nov 13 Quiz 12
Tue Nov 14 Lecture 24: Shortest paths
[slides, code]
Discussion 12: Graph traversals
Prelim 2
Wed Nov 15
Thu Nov 16 Lecture 25: Heaps
[slides, code]
Fri Nov 17
Mon Nov 20 Quiz 13
Tue Nov 21 Lecture 26: Assessment
[slides, code]
(no discussion)
Nov 22–26 Thanksgiving break
Mon Nov 27
Tue Nov 28 Lecture 27: Software engineering
[slides, code]
Discussion 13: Heaps, A6
Wed Nov 29
Thu Nov 30 Lecture 28: The Java ecosystem
[slides]
Fri Dec 1
Mon Dec 4 A6, Background survey
Tue Dec 5
Wed Dec 6
Thu Dec 7 Final exam review session (6:00 PM, Gates G01) Course evaluation, Late submissions (A6, background survey)
Fri Dec 8
Sat Dec 9 Final exam (2:00 PM)