Schedule
See the lectures page for a fine-grained list of chapter sections and online readings that contain core material for this course. See the recommended readings page for links to additional reference material associated with each lecture.
| Day | Date | Lecture | Discussion | Work due |
|---|---|---|---|---|
| Tue | Jan 24 | Lecture 1: Overview, structured programming Reading: Transition to Java (more) slides |
Discussion 1: Integrated Development Environments (IDEs) handout, code, slides, solution |
|
| Wed | Jan 25 | |||
| Thu | Jan 26 | Lecture 2: Java syntax, types, objects Reading: Appendix B: Java Classes (more) slides |
||
| Fri | Jan 27 | Discussion activity 1 | ||
| Mon | Jan 30 | Quiz 1 | ||
| Tue | Jan 31 | Lecture 3: Abstraction, encapsulation Reading: Prelude: Designing Classes—Encapsulation (more) slides & code |
Discussion 2: Object diagrams, arrays handout, slides, solution |
Syllabus quiz |
| Wed | Feb 1 | A1 | ||
| Thu | Feb 2 | Lecture 4: Specifications, testing Reading: Appendix A: Documentation and Programming Style (more) slides |
||
| Fri | Feb 3 | Discussion activity 2 | ||
| Mon | Feb 6 | Quiz 2, add deadline | ||
| Tue | Feb 7 | Lecture 5: Interfaces, subtyping slides & code |
Discussion 3: Designing and testing classes handout, code, solution |
|
| Wed | Feb 8 | |||
| Thu | Feb 9 | Lecture 6: Inheritance, dynamic dispatch, equality Reading: Appendix C: Creating Classes from Other Classes (more) slides & code |
||
| Fri | Feb 10 | Discussion activity 3 | ||
| Mon | Feb 13 | Quiz 3 | ||
| Tue | Feb 14 | Lecture 7: Exceptions Reading: Java Interlude 2: Exceptions (more) slides |
Discussion 4: Input/output handout, slides, code, solution Reading: Supplement 2: File Input and Output, Java I/O |
|
| Wed | Feb 15 | |||
| Thu | Feb 16 | Lecture 8: Bags, Generics Reading: Chapter 1: Bags; Java Interlude 2: Generics; Chapter 2: Bag Implementations That Use Arrays; (more) slides & code |
A2 | |
| Fri | Feb 17 | Discussion activity 4 | ||
| Mon | Feb 20 | Quiz 4 | ||
| Tue | Feb 21 | Lecture 9: Linked Structures Reading: Chapter 3: A Bag Implementation That Links Data (more) slides & code |
Discussion 5: Java collections handout, slides, code, solution |
|
| Wed | Feb 22 | |||
| Thu | Feb 23 | Lecture 10: Ordered Collections Reading: Chapter 10: Lists; Chapter 12: A List Implementation That Links Data (more) slides & code |
||
| Fri | Feb 24 | Discussion activity 5 | ||
| Feb 25–28 | February break | |||
| Wed | Mar 1 | (no discussion) | ||
| Thu | Mar 2 | Lecture 11: Efficiency Reading: Chapter 4: The Efficiency of Algorithms Chapter 19: Searching (more) slides & code |
||
| Fri | Mar 3 | |||
| Mon | Mar 6 | A3, Quiz 5 | ||
| Tue | Mar 7 | Lecture 12: Recursion Reading: Chapter 9 (more) slides & code |
Discussion 6: prelim review handout, slides (with TA solutions) |
|
| Wed | Mar 8 | |||
| Thu | Mar 9 | Lecture 13: Trees Reading: Chapters 24–26 (more) slides & code |
Prelim 1 | |
| Fri | Mar 10 | |||
| Mon | Mar 13 | Quiz 6 | ||
| Tue | Mar 14 | Snow Day | Snow Day | |
| Wed | Mar 15 | |||
| Thu | Mar 16 | Lecture 14A: Tree traversals Reading: (same as lecture 13) Lecture 14B: Loop Invariants, Searching Reading: Program correctness, loop invariants, linear search loop development, binary search loop development (more) slides & code |
||
| Fri | Mar 17 | |||
| Mon | Mar 20 | Quiz 7, drop deadline | ||
| Tue | Mar 21 | Lecture 15: Sorting Reading: Chapters 15–16 slides & code |
Discussion 7: Loop invariants handout, solution code, solution |
|
| Wed | Mar 22 | |||
| Thu | Mar 22 | Lecture 16: Hash tables slides & code Reading: Chapters 20–23 |
||
| Fri | Mar 24 | Discussion activity 7 | ||
| Mon | Mar 27 | Quiz 8 | ||
| Tue | Mar 28 | Lecture 17: Graphical User Interfaces (GUIs) slides & code Reading: none required (more) |
Discussion 8: Hash tables handout, code, solution code, solution |
A4 |
| Wed | Mar 29 | |||
| Thu | Mar 30 | Lecture 18: Event-driven programming slides & code Reading: none required (more) |
||
| Fri | Mar 31 | Discussion activity 8 | ||
| Apr 1–9 | Spring break | |||
| Mon | Apr 10 | Quiz 9 (optional) | ||
| Tue | Apr 11 | Lecture 19: Concurrency slides & code |
Discussion 9: Prelim review handout, slides (with TA solutions) |
|
| Wed | Apr 12 | |||
| Thu | Apr 13 | Lecture 20: Synchronization slides & code |
||
| Fri | Apr 31 | Discussion activity 9 | ||
| Mon | Apr 17 | A5, Quiz 10 | ||
| Tue | Apr 18 | Lecture 21: Graphs Reading: Chapters 29–30 (more) slides & code |
Discussion 10: Synchronization handout, code, solution code, solution |
|
| Wed | Apr 19 | |||
| Thu | Apr 20 | Lecture 22: Graph traversals slides & code |
Prelim 2 | |
| Fri | Apr 21 | Discussion activity 10 | ||
| Mon | Apr 24 | Quiz 11 | ||
| Tue | Apr 25 | Lecture 23: Shortest paths (Dijkstra’s algorithm) slides & code |
Discussion 11: Graph traversals handout, code, solution code, solution |
|
| Wed | Apr 26 | |||
| Thu | Apr 27 | Lecture 24: Priority queues and heaps slides & code |
||
| Fri | Apr 28 | Discussion activity 11 | ||
| Mon | May 1 | Quiz 12 | ||
| Tue | May 2 | Lecture 25: Design patterns and software engineering slides & code |
Discussion 12: Iterators handout, solution code, solution |
|
| Wed | May 3 | |||
| Thu | May 4 | Course assessment | ||
| Fri | May 5 | Discussion activity 12 | ||
| Mon | May 8 | Quiz 13 | ||
| Tue | May 9 | Lecture 26: The Java ecosystem slides & code |
(no discussion) | A6 |
| Tue | May 16 | Final exam review session (4:30 PM, Gates G01) slides (with TA solutions) |
||
| Thu | May 18 | Final exam | ||