Interactive data structures & algorithms

See algorithms think.

Every compare lifts. Every swap arcs. Every finished element locks green. AlgoLens animates the meaning of each step — so you can watch with the sound off and still understand exactly what the algorithm did.

space play← → step↑ ↓ speed

live · the actual AlgoLens engine sorting a random array on loop — amber compares, red swaps, green settles

Motion is the language

One motion vocabulary, shared by every algorithm on the platform. A compare looks the same in bubble sort as it does in a binary search tree — so once you can read it, you can read everything.

Compare

The two elements under inspection lift and pulse amber — identical in bubble sort and in a BST search.

Swap

Out-of-order elements arc past each other. Nothing ever teleports; motion carries the meaning.

Settle

A finalized element drops into place with a spring bounce and locks green. Finality feels final.

Visit

Graph exploration spreads as a ripple from the source — BFS and DFS become distinguishable by shape alone.

Reject

A dead end flashes red with a quick shake — visually “no, not this one” — then fades back to neutral.

Algorithms are data.
The engine just plays them.

Every algorithm is a pure generator that yields state snapshots. The engine is a tape player: it can pause, scrub backwards, and replay any moment — because the steps are values, not side effects. That is also why the whole visualizer works offline and why a new algorithm is one new file.

// one file. no engine changes. no UI changes.
export const yourAlgorithm = {
  id: "your-algorithm",
  category: "sorting",
  *generateSteps(input) {
    yield {
      description: "Compare a[0] with a[1]",
      state: { kind: "array", ... },
    };
  },
};

The curriculum

19 algorithms, all live, all watchable end to end.

Practice

Watch the idea.
Then write the code.

63 original interview problems across the classic patterns — arrays, graphs, trees, DP, and more. Write real JavaScript or Python, graded instantly: JS runs in your browser, Python runs in an isolated sandbox with no network access. Nothing leaves your machine either way.

Start practicing
✓ two_sum([2,7,11,15], 9)
✓ two_sum([3,2,4], 6)
✓ two_sum([3,3], 6)
✓ two_sum([-1,-2,-3,-4,-5], -8)

All 4 tests passed
道 · the way

Project-based pathways, built on 守破離

No tutorials to copy — only project briefs to fulfill, staged Shu-Ha-Ri: follow the form, break it, then leave it behind. First path: Backend Engineering.

Begin the walk