Free DSA lessons
Each lesson teaches one idea, shows it with a visual, then gives you one problem built for it. Read any of them here, or solve the problem in your browser. No sign-up needed.
Programming basics
Full path- A name for a valueStage 0 · Names for values7 min
- Changing a valueStage 0 · Names for values7 min
- Swapping two valuesStage 0 · Names for values8 min
- True or false valuesStage 0 · Names for values7 min
- Dividing and what's leftStage 1 · Numbers8 min
- Which part first?Stage 1 · Numbers7 min
- Peeling off digitsStage 1 · Numbers8 min
- Numbers have limitsStage 1 · Numbers8 min
- Two ways to goStage 2 · Making decisions8 min
- More than two casesStage 2 · Making decisions8 min
- And, or, notStage 2 · Making decisions9 min
- Decisions inside decisionsStage 2 · Making decisions9 min
- Doing it again and againStage 3 · Loops that count9 min
- Using the counterStage 3 · Loops that count8 min
- Counting the ones that countStage 3 · Loops that count9 min
- Jumps and countdownsStage 3 · Loops that count8 min
- Repeat untilStage 4 · Loops that wait8 min
- Stopping earlyStage 4 · Loops that wait9 min
- When you can't predict the lengthStage 4 · Loops that wait9 min
- Taking a number apartStage 4 · Loops that wait9 min
- A function you write yourselfStage 5 · Functions9 min
- Answering earlyStage 5 · Functions8 min
- Breaking a job into small jobsStage 5 · Functions10 min
- Names stay insideStage 5 · Functions9 min
- Letters by positionStage 6 · Text9 min
- Visiting every letterStage 6 · Text8 min
- Building new textStage 6 · Text9 min
- Comparing neighboursStage 6 · Text9 min
- A row of boxesStage 7 · Lists9 min
- Visiting every itemStage 7 · Lists8 min
- Looking for one itemStage 7 · Lists9 min
- Making a new listStage 7 · Lists9 min
- A loop inside a loopStage 8 · Loops inside loops10 min
- Rows, then columnsStage 8 · Loops inside loops9 min
- A grid of numbersStage 8 · Loops inside loops10 min
- Walking the gridStage 8 · Loops inside loops10 min
- Fizz and buzzStage 9 · Mastery12 min
- The runner-upStage 9 · Mastery12 min
- A row of Pascal's triangleStage 9 · Mastery12 min
- Roman numeralsStage 9 · Mastery14 min
Arrays
Full path- Positions start at 0Stage 0 · What an array is4 min
- The length tells you where things areStage 0 · What an array is5 min
- Changing a value in placeStage 0 · What an array is6 min
- A loop visits every boxStage 1 · Traversal6 min
- Count what matchesStage 1 · Traversal6 min
- Stop when you find itStage 1 · Traversal7 min
- Walk backwardsStage 1 · Traversal7 min
- Remember the best so farStage 2 · Traversal with state7 min
- Two things at onceStage 2 · Traversal with state6 min
- Carry a total forwardStage 2 · Traversal with state7 min
- Compare with the previous boxStage 2 · Traversal with state9 min