Understand
Begin with a plain-language mental model and a concrete problem.
Free and open learning
Explore algorithms through interactive visualizations, working code, guided examples, and small challenges—freely available to every learner.
Our learning promise
Knowledge grows when it is shared.
Start learning
8 complete lesson · 4 on the roadmap
Compare adjacent values and watch the largest unsorted item rise into place.
Find the smallest remaining value and place it at the next sorted position.
Take the next value and shift larger sorted values right until it fits.
Divide values into smaller arrays, sort them, and merge the ordered results.
Partition values around a pivot, then recursively sort the two resulting ranges.
Build a max heap and repeatedly extract its largest value.
Count bounded integer values instead of comparing pairs.
Order integer keys one digit position at a time.
The method
Every lesson follows the same path, so you can focus on the idea rather than relearning the interface.
Begin with a plain-language mental model and a concrete problem.
Move through every comparison, choice, state change, and result.
Compare tested JavaScript, Python, Java, and C++ implementations.
Use examples, challenges, and games to make the idea stick.
The roadmap
One growing library, organized around the way algorithmic thinking develops.
Arrange data and compare different strategies for ordering it.
Find values efficiently in lists, ranges, and structured data.
Explore networks, paths, traversal, and shortest-route problems.
Break problems into smaller versions of themselves.
Reuse solved subproblems to make difficult problems tractable.
Build solutions through locally optimal choices.
Match, search, transform, and reason about text efficiently.
Built in the open
Algorithm Lab has no sign-in gate, paid tier, or locked lesson. The source code is open, the study material is reusable with attribution, and contributions are welcome.