// curriculum · 12 lessons · built for the thumb
[data structures]
From a row of numbered lockers to self-balancing trees. Every lesson opens with an interactive demo you can poke — push, pop, walk, hash, rotate — and the prose lives below the demo, not in front of it.
Refresher
Lessons
- #01
Arrays
Contiguous memory — index access in one CPU cycle
- read
- O(1)
- write
- O(n)
- layout
- contiguous
- #02
Linked Lists
Nodes scattered through memory, stitched by pointers
- read
- O(n)
- write
- O(1)*
- layout
- scattered
- #03
Stacks
LIFO — newest in, newest out
- read
- O(1)
- write
- O(1)
- layout
- LIFO
- #04
Queues
FIFO — fair order, every time
- read
- O(1)
- write
- O(1)
- layout
- FIFO
- #05
Binary Trees
One node, two children — every recursive data structure
- read
- O(n)
- write
- O(1)
- layout
- hierarchy
- #06
Binary Search Trees
Order in, log-time out
- read
- O(log n)
- write
- O(log n)
- layout
- ordered
- #07
Heaps & Priority Queues
Array-backed, log-time min — the engine of priority queues
- read
- O(1)
- write
- O(1)
- layout
- FIFO
- #08
Hash Tables
djb2 hash → bucket index → average O(1)
- read
- O(1)*
- write
- O(1)*
- layout
- bucketed
- #09
Graphs
Vertices and edges — the universal abstraction
- read
- O(V+E)
- write
- varies
- layout
- edges
- #10
Balanced Trees
Rotations keep height ≈ log n, no matter the insert order
- read
- O(log n)
- write
- O(log n)
- layout
- self-rotating
- #11
Dynamic Programming
Trade memory for time — solve once, remember forever
- read
- O(1)*
- write
- tabulate
- layout
- O(n·m)