| 1 | Classes & objects | Classes, fields, methods, constructors; organising a class hierarchy |
| 2 | Inheritance & overriding | extends, super, overriding vs overloading, access modifiers |
| 3 | Polymorphism | Dynamic dispatch, runtime vs compile-time binding, upcasting/downcasting |
| 4 | Abstract classes & interfaces | Abstract classes/methods, interfaces, separating interface from implementation |
| 5 | Collections & iterators | List, Set, Map, ArrayList/HashMap, the Iterator/Iterable contract |
| 6 | Generics & callbacks | Generic classes/methods, type parameters and bounds, functional-style callbacks |
| 7–8 | Cloning, I/O, serialization, packages | Object cloning, file/stream I/O, serialization, package structure |
| 9 | Exception handling | try/catch/finally, checked vs unchecked, throw/throws, custom exceptions |
| 10–12 | Concurrent programming | Threads, Runnable, race conditions, locks, synchronization, semaphores, monitors |