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 Jan 21 Lecture 1: Overview, structured programming
[slides, code]
Discussion 1: Introductions and debugging
[slides, handout solution]
Wed Jan 22
Thu Jan 23 Lecture 2: Objects
[slides, code]
Fri Jan 24 Discussion activity 1
Mon Jan 27 Q1
Tue Jan 28 Lecture 3: Abstraction, encapsulation
[slides, code]
Discussion 2: Object diagrams and arrays
[slides, handout solution]
Wed Jan 29
Thu Jan 30 Lecture 4: Specifications, testing
[slides, code]
A1
Fri Jan 31 Discussion activity 2
Mon Feb 3 Q2
Tue Feb 4 Lecture 5: Interfaces, subtyping
[slides, code]
Discussion 3: Designing and testing classes
[slides, handout solution]
Wed Feb 5
Thu Feb 6 Lecture 6: Inheritance, dynamic dispatch
[slides, code]
Syllabus quiz
Fri Feb 7 Discussion activity 3
Mon Feb 10 Q3
Tue Feb 11 Lecture 7: The class Object, exceptions
[slides, code]
Discussion 4: Reading and writing files
[slides, handout solution]
Wed Feb 12
Thu Feb 13 Lecture 8: Bags, Generics
[slides, code]
Fri Feb 14 Discussion activity 4
Feb 15–18 February break
Wed Feb 19 (no discussion)
Thu Feb 20 Lecture 9: Linked structures
[slides, code]
A2
Fri Feb 21
Mon Feb 24 Q4
Tue Feb 25 Lecture 10: Ordered collections
[slides, code]
Discussion 5: Iterators
[slides, handout solution]
Wed Feb 26
Thu Feb 27 Lecture 11: Efficiency
[slides, code]
Fri Feb 28 Discussion activity 5
Mon Mar 3 Q5
Tue Mar 4 Lecture 12: Recursion
[slides, code]
Discussion 6: Prelim 1 review
[slides, solutions]
Wed Mar 5
Thu Mar 6 Lecture 13: Trees I
[slides, code]
A3
Fri Mar 7 Discussion activity 6
Mon Mar 10 Q6
Tue Mar 11 Lecture 14: Trees II
[slides]
Discussion 7: Binary search trees
[handout solution]
Prelim 1
Wed Mar 12
Thu Mar 13 Lecture 15: Loop invariants
[slides, code]
Fri Mar 14 Discussion activity 7
Mon Mar 17 Q7
Tue Mar 18 Lecture 16: Sorting
[slides, code]
Discussion 8: Loop invariants
[handout solution]
Wed Mar 19
Thu Mar 20 Lecture 17: Hash tables
[slides, code]
Fri Mar 21 Discussion activity 8
Sun Mar 23 A4
Mon Mar 24 Q8
Tue Mar 25 Lecture 18: Graphs
[slides, code]
Discussion 9: Hash tables
Wed Mar 26
Thu Mar 27 Lecture 19: Graph traversals
Fri Mar 28 Discussion activity 9
Mar 29–Apr 6 Spring break
Mon Apr 7
Tue Apr 8 Lecture 20: Shortest paths
Discussion 10: Graph traversals
Wed Apr 9
Thu Apr 10 Lecture 21: Heaps
Fri Apr 11 Discussion activity 10
Mon Apr 14 Q9
Tue Apr 15 Lecture 22: Graphical user interfaces
Discussion 11: Prelim 2 review
Wed Apr 16
Thu Apr 17 Lecture 23: Event-driven programming
A5
Fri Apr 18 Discussion activity 11
Mon Apr 21 Q10
Tue Apr 22 Lecture 24: Concurrency
Discussion 12: Shared buffers
Prelim 2
Wed Apr 23
Thu Apr 24 Lecture 25: Synchronization
Fri Apr 25 Discussion activity 12
Mon Apr 28 Q11
Tue Apr 29 Lecture 26: TBD
Discussion 13: TBD
Wed Apr 30
Thu May 1 Lecture 27: Software engineering
Fri May 2 Discussion activity 13
Mon May 5 Q12
Tue May 6 Lecture 28: The Java ecosystem
A6
Mon May 12 Final exam (9:00am)