Build understanding that transfers
Data structures organize information; algorithms define the steps that work with it. This course teaches the state, reasoning, tradeoffs, and edge cases behind a solution so you can adapt when the interview question changes.
All 173 topics are available. Each has an explanation, a worked example, correctness reasoning, costs, pitfalls, an understanding check, and an original exercise. Chapters share a visual lab and runnable Python examples so you can study one idea in the context of a complete algorithm. Related LeetCode sets follow the chapter's concepts.
Choose your starting point
Begin with Programming foundations if variables, loops, functions, or references are unfamiliar. Experienced engineers can start with complexity, then use the topic search to revisit gaps. Follow the chapter order when learning a new structure: later lessons rely on earlier contracts and invariants.
Examples use Python 3. Read the code as an expression of the algorithm, then implement it in your interview language. Unless stated otherwise, n means input size, arithmetic is bounded, and auxiliary space includes temporary collections and the call stack but excludes input and separately identified output.
Use every lesson actively
Predict a visual step before advancing. Explain why the state is correct, then close the example and implement the idea independently.
- Read the topic's worked reasoning, then relate it to the chapter lab.
- Run the Python example and its assertions locally; change an input and predict the result. The page displays code and does not execute it.
- Try the original exercise before revealing the solution. Use the understanding check to test your explanation.
- Practice the chapter's LeetCode set after covering its topics. Some problems combine several prerequisites.
- Record mistakes and return later without a topic label. Mark complete when you can explain the contract, invariant, complexity, and edge cases.
From foundations to interview readiness
Work through arrays, strings, hashing, pointer patterns, and linear structures first. Continue through sorting, search, trees, heaps, tries, backtracking, and graph algorithms. Then tackle DP, greedy proofs, intervals, bits, math, and range-query structures. The final chapter mixes techniques and tests your reasoning against independent baselines.
There is no sign-up or paid course access. Progress, bookmarks, solved checkboxes, and notes are stored in this browser. LeetCode links open on its site; solved status is manual. Object-Oriented Design and System Design are separate courses with their own outlines.