Selected course

Coding Patterns

Watch each core algorithm, then learn its mental model, invariant, and proof.

Lessons
16
Concepts
78
Diagrams
94
Start01
Recommended first module

Time & space complexity

17:41 video · Learn to describe how runtime and memory grow as the input grows, without confusing machine speed with algorithmic efficiency.

Begin learning
Course map

Your curriculum

16 modules · Follow in order or jump to a skill gap.

  1. 01

    Time & space complexity

    17:41 video · Learn to describe how runtime and memory grow as the input grows, without confusing machine speed with algorithmic efficiency.

    Open module
  2. 02

    Arrays & strings

    18:24 video · Understand why indexing is fast, why middle edits are expensive, and how dynamic arrays trade occasional resizing for cheap appends on average.

    Open module
  3. 03

    Linked lists

    17:04 video · Learn singly and doubly linked node chains, their operation costs, and the pointer discipline that prevents lost suffixes and broken back-links.

    Open module
  4. 04

    Hash tables

    25:51 video · See how hash functions power sets and maps, why collisions are unavoidable, and why average constant-time lookup depends on distribution and load factor.

    Open module
  5. 05

    Stacks & queues

    14:58 video · Use stacks for newest-first unresolved work and queues for oldest-first frontier expansion, with the Python containers that keep operations efficient.

    Open module
  6. 06

    Recursion

    19:02 video · Build recursive solutions from a base case, a shrinking subproblem, and a precise return contract while accounting for call-stack order and memory.

    Open module
  7. 07

    Binary search

    21:51 video · Move from exact lookup in sorted data to condition-based boundary search over any monotonic false/true decision space.

    Open module
  8. 08

    Binary trees & BSTs

    39:39 video · Connect binary-tree shape, array representation, DFS orders, BFS levels, iterative traversal, and the ordering invariant that makes a BST searchable.

    Open module
  9. 09

    Heaps & priority queues

    24:08 video · Understand the complete-tree shape, array index formulas, sift operations, linear-time heapify, heap sort, and Python’s min-heap interface.

    Open module
  10. 10

    Sorting algorithms

    41:41 video · Compare bubble, insertion, selection, merge, quick, and counting sort by the invariant each maintains—not by memorized code alone.

    Open module
  11. 11

    Graphs: DFS & BFS

    32:11 video · Model vertices and edges, choose a representation, and traverse with recursive DFS, iterative DFS, or BFS while proving each state is discovered once.

    Open module
  12. 12

    Two pointers

    8:18 video · Replace a quadratic pair search with two coordinated indices when order or a read/write relationship proves which pointer must move.

    Open module
  13. 13

    Sliding window

    20:31 video · Maintain fixed-size or variable-size contiguous ranges incrementally, updating only the elements that enter and leave instead of recomputing each range.

    Open module
  14. 14

    Recursive backtracking

    12:59 video · Traverse a decision tree, maintain one mutable partial solution, prune invalid branches, and undo each choice so sibling branches start from clean state.

    Open module
  15. 15

    Dynamic programming

    20:41 video · Turn repeated recursive subproblems into named states, transitions, and base cases using top-down memoization or bottom-up tabulation.

    Open module
  16. 16

    Binary & bit manipulation

    17:23 video · Connect positional binary representation, signed values, two’s complement, binary arithmetic, bitwise operators, and shifts to reliable coding patterns.

    Open module