Welcome to CMSC230-F2026! First time here? — Read the Syllabus.
Quick links
- Brightspace (quizzes, journal, Discord invite)
- Classroom50 & GitHub (assignments and feedback)
- Discord (announcements, questions, chat)
Coming up
Everything scheduled this term.
Finish the Fraction class we wrote together: strengthen its invariant so that every fraction is stored in lowest terms, add the arithmetic that gets to assume it, and make it a real Number.
Build an immutable Matrix. Constructors that copy their input rather than borrow it, an equals with the hashCode that has to come with it, and arithmetic that refuses a shape it cannot handle.
Teach Matrix its natural order so Arrays.sort will sort it, then write comparators for the orders it does not have. Find the place where compareTo and equals disagree, and fix it. Then do the whole thing again to Fraction, where the disagreement never happens.
Use the library’s set and map to count words. Then build a list of your own out of nodes, and use an iterator to remove from a list without breaking it.
Build a hash set of your own, and make a key that cannot move. Then three collections that do not look anything up: a stack, a queue and a priority queue.
- [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
- [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
- [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
- [DJ] Interfaces, [API] Comparable: the compareTo contract
- [CJ] 6.1 — Interfaces
- [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
- [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
Every assignment is on the Assignments page, and every week’s reading on the Schedule.