Homework assignments are due at 11:00am on the day indicated. Assignments are posted to Moodle. Reading assignments are listed on the day they are assigned, and generally prepare you for the next class. Optional reading assignments are in brackets, and “leave-one-out” assignments are starred. For more details on class policies, please see the syllabus. You may find it helpful to look at the overview chart.
Note that this schedule is an aspirational approximation of what we'll do; it may be updated as the term goes on.
Unit 0: Introduction | ||||
Date | Due | Class Topic | Out | Reading |
---|---|---|---|---|
Week 1: Intro to Java | ||||
1. M 3/31 | Intro; First look at Java
|
HW0: Hello! HW1: Intro to Java |
A.1–49, A.57–62, A.64–85, B.1–29 |
|
2. W 4/2 | HW0, HW1 | Java Lab: Classes, Static, Scanner, Strings, etc. | HW2: Guessing Game | A.86–92, C.1–8, C.21–36, D.1–13, 12.1–11 |
3. F 4/4 | HW2 | List ADT; Java Lab: Composition, Inheritance, Interfaces | HW3: People Sorter | A.97–105, B.36–40, D.14–29 |
Unit 1: Primary ADTs | ||||
Week 2: List and Stack ADTs | ||||
4. M 4/7 | Java Review; How to Get Help | 5.1–22 | ||
5. W 4/9 | HW3 | Lists of Lists; Stack ADT | HW4: Mazes, Part I | A.94–96 |
6. F 4/11 | Lab / Review; Quiz 1 | HW5: Mazes, Part II | 10.1–12, 10.19–22 | |
Week 3: Queue, Priority Queue, and Graph ADTs | ||||
7. M 4/14 | HW4 | Queue, Priority Queue, and Graph ADTs
|
28.1–10 | |
8. W 4/16 | More on Graphs
|
28.12–24 | ||
9. F 4/18 | HW5 | Graph Traversal | HW6: Graph Algorithms | 19.1–21 |
Week 4: Dictionary and Set ADTs; Moving into Algorithms | ||||
10. M 4/21 | HW6 | Dictionary, Set, and Multiset ADTs | A.86–92, 8.1–15, 8.21–26 | |
11. W 4/23 | Sorting | |||
12. F 4/25 | Quiz 2; Timing Lab
|
HW8: Timing Sorting | 4.1—22 | |
Unit 2: Efficiency and Algorithms | ||||
Date | Due | Class Topic | Out | Reading |
Week 5: Efficiency and Algorithms | ||||
13. M 4/28 | HW8 | Efficiency Analysis | HW9: Efficiency; HW10: Timing Collections |
Chs. 7 & 18 |
14. W 4/30 | HW9 | Recursion; Searching | Ch. 9 | |
15. F 5/2 | HW10 | Asymptotics of Algorithms; Sorting Redux; Mid-term feedback | Chs. 1–3, Ch. 13 | |
Unit 3: Implementation | ||||
Week 6: List Implementations | ||||
XX. M 5/5 | No class (like a Marxist utopia) | |||
16. W 5/7 | Array-based List impl.; Java Arrays and Generics
|
HW11: Histogram | Ch. 14 | |
17. F 5/9 | Link-based List impl. | HW12: LinkedList | Ch. 6 | |
Week 7: Stack and Queue Implementations | ||||
18. M 5/12 | HW11, HW12 | Stack impl. | HW13: Interpreter, Part I | Ch. 11 |
19. W 5/14 | Queue impl.; Tree and Binary Tree ADTs | HW14: Interpreter, Part II | Ch. 23 | |
20. F 5/16 | HW13 | Tree and Binary Tree ADTs | HW15*: BFS back-end | Ch. 24 |
Week 8: Trees | ||||
21. M 5/19 | Quiz 3; Heap ADT & impl. | Ch. 26 | ||
22. W 5/21 | HW14 | Priority Queue impl.; Disjoint-Sets ADT; PQs in brain imaging | HW16*: Heapsort | 25.1–43 |
23. F 5/23 | HW15 | Binary Search Tree ADT | 25.44–48 | |
Week 9: Set and Dictionary Implementations; Self-Balancing Trees | ||||
24. M 5/26 | HW16 | BST-based impl. of Set and Dictionary; Hashing for Dictionaries |
HW17*: Spell Checker | Chs. 21 & 22 |
25. W 5/28 | Hashing | HW18*: Word Frequencies | Ch. 27 | |
26. F 5/30 | HW17 | Hashing; Self-Balancing Search Trees | Optional HW19: Balanced Tree | Ch. 29 |
Week 10: Graph Implementations | ||||
27. M 6/2 | HW18 | Self-Balancing Search Trees | ||
28. W 6/4 | HW19 | Quiz 4; Graph impl.; Review; Course Evals
|
||
Exam Period | ||||
Sat. 6/7 | 2a Exam Period: 8:30am–11am (though the final is self-scheduled) |