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) |