Course contents
Concurrency Curriculum
Learn to identify invariants, prove correctness, choose Java primitives, manage execution, and carry the same reasoning across database and distributed boundaries.
Reasoning Foundations
Build the mental model used throughout the course: reason about tasks, interleavings, shared invariants, correctness, and progress before choosing an API.
Java Memory Model
Understand atomicity, visibility, ordering, happens-before, publication, and the guarantees behind Java synchronization tools.
Locks and Coordination
Choose and use Java locks, conditions, permits, gates, barriers, and cancellation protocols according to the relationship between tasks.
Tasks, Executors, and Modern Java
Manage task execution, capacity, results, failures, scheduling, parallel computation, virtual threads, and structured lifecycles.
Coding Problems
Java-first concurrency exercises with progressive hints, rigorous solutions, and explicit safety and liveness reasoning.
Concurrent Collections and Patterns
Choose collections by operation semantics, transfer ownership through queues, and reduce contention through snapshots, partitioning, and coordinated caching.
Design, Testing, and Diagnostics
Turn primitives into reviewable components, measure the right bottleneck, test hostile schedules, benchmark honestly, and diagnose production contention.
Database and Distributed Concurrency
Carry concurrency reasoning across process boundaries using transactions, constraints, idempotency, leases, fencing, and an honest coordination decision framework.