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 |