Schedule
A week runs Wednesday through the following Monday, across the weekend:
| Wed (class) | Mon (class) | Tue (no class) | |
|---|---|---|---|
| Assignment | may go out | due | |
| Reading | due before class | ||
| Quiz | at the start, 2 attempts | ||
| Presentation | of the assignment due the day before |
Why the week is arranged this way is on How the week works.
Week 7 (10/7—10/12): Midterm, and fall break
- Exam: Midterm, Oct 7, 2026 — The whole period, in Sutliff 106 or on Zoom with your camera on. A repository like an assignment’s. Open book, no AI.
- Quiz: None — Monday 10/12 is fall break.
No new reading and no new assignment this week. Wednesday is the midterm, which takes the whole period, and Monday is fall break. The exam page says what is on it and what you may use. A6 is presented on the Wednesday after the break, which is also when the next assignment goes out.
Week 6 (9/30—10/5): Hash tables and queues
- Assignment: A6 out Wednesday 09/30, due Tuesday 10/06.
- Presentation: A5 on Wednesday 09/30, a student walks us through their word count and their
WordChain. - Quiz: Quiz 5, Oct 5, 2026 — Two attempts, one at the start of class and one near the end.
- Reading (before Oct 5, 2026), either of:
- [DJ] Choosing Immutable Types for Your Key, [DJ] Storing Elements in Stacks and Queues
- [CJ] 9.3.3 — Hash Sets, [CJ] 9.3.5 — Queues and Deques, [CJ] 9.3.6 — Priority Queues
Wednesday is how a HashMap finds a key, beside a list and a tree set, which look for things in their own ways; then you build a hash set by hand. It is designed so you can follow it unread. Monday is the collections that do not look anything up at all: stacks, queues and priority queues. The reading is for Monday.
[YL] is optional extra reading: [YL] 2.3 — Hashing Technique builds the same hash set out of an array of linked lists.
Week 5 (9/23—9/28): Collections
- Assignment: A5 out Friday 09/25, due Tuesday 09/29.
- Presentation: A4 on Wednesday 09/23, a student walks us through their comparator and their
compareTo. - Quiz: Quiz 4, Sep 28, 2026 — Two attempts, one at the start of class and one near the end.
- Reading (before Sep 28, 2026), either of:
- [DJ] Extending Collection with List, [DJ] Iterating over the Elements of a Collection, [DJ] Extending Collection with Set, SortedSet and NavigableSet, [DJ] Using Maps to Store Key Value Pairs
- [CJ] 9.3.1 — Linked Lists, [CJ] 9.3.2 — Array Lists, [CJ] 9.4.1 — Basic Map Operations
Wednesday is lists — ArrayList, the five calls, an iterator, and what LinkedList costs — and it runs on the Matrix you already have. Monday is the other two kinds of collection, sets and maps, as things you use; how a hash table finds a key is the week after, not this one.
[YL] is optional extra reading: [YL] 2.1 — Lists and Iterators is lists and iterators, and [YL] 2.2 — Sets and Maps is the Set and Map methods in a list.
Week 4 (9/16—9/21): Ordering objects
- Assignment: A4 out Wednesday 09/16, due Tuesday 09/22.
- Presentation: A3 on Wednesday 09/16, a student walks us through their
Matrix. - Quiz: Quiz 3, Sep 21, 2026 — Two attempts, one at the start of class and one near the end.
- Reading (before Sep 21, 2026), either of:
- [DJ] Interfaces, [API] Comparable: the compareTo contract
- [CJ] 6.1 — Interfaces
One question this week, and A4 is the answer to it: what does Arrays.sort need from your class before it will sort your objects? Wednesday is designed so you can follow it unread, so this is reading for Monday rather than for tomorrow.
[API] Comparable: the compareTo contract is the contract itself, in a few sentences of javadoc. It is the same kind of rule Object gave you last week, and it is worth reading the same way — as something you have to keep, rather than as documentation.
[YL] is optional extra reading this week rather than a track of its own. [YL] 1.7 — The Comparable, Comparator Interfaces, Arrays, and Collections Class is the matching section and it is a quick way in, but it teaches ordering on a Fraction rather than on the matrices A4 asks about, so read one of the two tracks above as well.
Week 3 (9/9—9/14): Equality and exceptions
- Assignment: A3 out Wednesday 09/09, due Tuesday 09/15.
- Presentation: A2 on Wednesday 09/09, a student walks us through their
Fraction. - Quiz: Quiz 2, Sep 14, 2026 — Two attempts, one at the start of class and one near the end.
- Reading (before Sep 14, 2026), either of:
- [DJ] Exceptions, [API] Object: the equals and hashCode contracts
- [CJ] 5.2 — Object: The Cosmic Superclass, [CJ] 7.1 — Dealing with Errors, [CJ] 7.2 — Catching Exceptions, [CJ] 7.4 — Using Assertions
- [YL] 1.4 — Primitive vs. Reference Types, [YL] 1.6 — Exception Handling
Two questions this week, and A3 needs both answers. When are two objects the same one, and when are they merely equal? And what should a method do when it is handed something it cannot work with?
[API] Object: the equals and hashCode contracts is the whole of the first answer, in four sentences of javadoc — worth reading as the rule you have to keep rather than as documentation. Its equals and hashCode are also what [CJ] 5.2 — Object: The Cosmic Superclass is about, so the [CJ] track re-reads a section from week 2 with a different question in hand.
Monday is the part of A3 where a mistake still compiles: a HashSet that cannot find an object it is already holding, and a method that throws something the compiler will not let its caller ignore.
Week 2 (9/2—9/7): Inheritance
A one-class week. Mon 09/07 is Labor Day, so this week is Wednesday only. Under the one-class rule, there is no quiz, and the reading is due before the work it supports rather than before a class.
- Assignment: A2 out Wednesday 09/02, due Tuesday 09/08, both parts are graded, and we start Part 2 together on the day it goes out.
- Presentation: A1 on Wednesday 09/02, and A0 with it — a student walks us through their
sum. - Quiz: None
- Reading (before Sep 8, 2026), either of:
- [DJ] Inheritance
- [CJ] 5.1 — Classes, Superclasses, and Subclasses, [CJ] 5.2 — Object: The Cosmic Superclass, [CJ] 5.4 — Object Wrappers and Autoboxing, [CJ] 5.6 — Abstract Classes
- [YL] 1.5 — Inheritance and Polymorphism
There is no class between 09/02 and 09/09, so A2 gets a full week — and no class in the middle of it to ask questions in. Part 2 is the half that leans on the reading: [CJ] 5.4 — Object Wrappers and Autoboxing is what explains why an int and a double can sit in a Number[] beside a Fraction, and [CJ] 5.6 — Abstract Classes is what Number itself is — the section to read before attempting A2’s optional part.
Week 1 (8/26—9/1): OOP
- Quiz: Quiz 1, Aug 31, 2026 — Two attempts, one at the start of class and one near the end.
- Reading (before Aug 31, 2026), either of:
- [DJ] Classes and Objects
- [CJ] 4.1 — Introduction to Object-Oriented Programming, [CJ] 4.3 — Defining Your Own Classes, [CJ] 4.5 — Method Parameters, [CJ] 4.6 — Object Construction
- [YL] 1.1 — Members of a Class and Access Specifiers, [YL] 1.2 — Attributes and Constructors, [YL] 1.3 — Methods