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