Schedule

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)