Skip to content

Learning Paths

Not sure where to start? Pick a track that matches your goal. Each track is ordered so that earlier patterns build foundations for later ones.

How Difficulty Works

Every pattern is tagged with a difficulty level:

  • Beginner — single core mechanism, minimal prerequisites
  • Intermediate — combines 2-3 concepts, requires some background
  • Advanced — complex multi-component systems, strong prerequisites

Track 1: Data Structures Fundamentals

Build your way up from simple fixed-size containers to self-balancing trees.

#PatternDifficultyKey Takeaway
1BitmaskBeginnerPack N flags into one integer
2Ring BufferBeginnerFixed-size FIFO with zero allocation
3Tagged UnionBeginnerType tag for safe dispatch
4Min HeapIntermediateO(1) access to highest-priority item
5TrieIntermediateO(k) lookup by key length
6Bloom FilterIntermediateProbabilistic membership testing
7LRU CacheIntermediateHash map + linked list combo
8Skip ListAdvancedProbabilistic sorted structure
9B+ TreeAdvancedDisk-optimized balanced tree
10Merkle TreeAdvancedHash chain for integrity proofs
11VisitorAdvancedDecouple traversal from operations

After this track you'll understand the core data structures behind databases (B+ Tree), caches (LRU), and blockchains (Merkle Tree).

Track 2: Concurrency & Scheduling

From basic locking primitives to production-grade work distribution.

#PatternDifficultyKey Takeaway
1SemaphoreBeginnerCounter-based concurrency limit
2Double BufferingBeginnerAtomic swap of two buffers
3ObserverBeginnerSubscribe/notify decoupling
4Event LoopIntermediateSingle-threaded I/O multiplexing
5BackpressureIntermediateFlow control between producer/consumer
6Copy-on-WriteIntermediateShare until mutation
7Cooperative SchedulingAdvancedYield points for responsiveness
8MVCCAdvancedVersioned reads never block writers
9Work StealingAdvancedIdle threads steal from busy queues
10Actor ModelAdvancedIsolated state + message passing

After this track you'll understand how React stays responsive (Cooperative Scheduling), how databases handle concurrent transactions (MVCC), and how Go/Tokio schedule goroutines (Work Stealing).

Track 3: System Reliability

Build resilient services that handle failures gracefully.

#PatternDifficultyKey Takeaway
1Retry with BackoffBeginnerExponential delay + jitter
2Batch ProcessingBeginnerAmortize per-operation overhead
3State MachineBeginnerExplicit states, impossible transitions blocked
4Circuit BreakerIntermediateFail fast when service is down
5Rate LimiterIntermediateToken bucket controls throughput
6Middleware ChainIntermediateComposable request handlers
7Dependency GraphIntermediateDAG + topological sort
8RegistryBeginnerSelf-registration for plugin discovery
9Consistent HashingAdvancedMinimal remapping on node change
10Logical ClockAdvancedCausal ordering without wall clocks

After this track you'll be able to design resilient API gateways, service meshes, and distributed task schedulers.

Track 4: Storage Engine Internals

Understand how databases and storage engines work under the hood.

#PatternDifficultyKey Takeaway
1TombstoneBeginnerMark deleted, compact later
2Dirty FlagBeginnerSkip recomputation if unchanged
3IteratorBeginnerLazy pull-based traversal
4Write-Ahead LogIntermediateLog before apply for crash safety
5CheckpointingIntermediatePeriodic state snapshots
6Diff / PatchIntermediateMinimal change computation
7LSM TreeAdvancedWrite-optimized on-disk storage
8Merge IteratorAdvancedK-way merge of sorted streams

After this track you'll understand the architecture of LevelDB/RocksDB (LSM Tree + WAL + Checkpointing) and how Git tracks changes (Diff/Patch + Merkle Tree).

Memory Management Track (Bonus)

For systems programmers who want to understand allocators and GC alternatives.

#PatternDifficultyKey Takeaway
1Reference CountingBeginnerDeterministic cleanup at rc=0
2Object PoolBeginnerPre-allocate and reuse
3FlyweightBeginnerShare identical instances
4InterningIntermediateHash-based deduplication
5Free ListIntermediateO(1) alloc from freed slots
6Arena AllocatorIntermediateBump-allocate, bulk-free
7VtableAdvancedFunction pointers for runtime polymorphism

After this track you'll understand how Go's sync.Pool, Rust's bumpalo, and CPython's small object allocator work.

Suggested Study Schedule

PaceDaily TimeFull Completion
Relaxed30 min/day~8 weeks
Moderate1 hr/day~4 weeks
Intensive2 hr/day~2 weeks

For each pattern: read the doc (10 min) → run the visualization (5 min) → complete the exercise in one language (15-30 min) → try the challenge questions (5 min).

Tip: Fork the repo and use the Study Plan to track your progress with checkboxes.

Released under the MIT License.