Learn Data Structures and Algorithms
Learn data structures and algorithms from Big O to dynamic programming, with every structure built from scratch in Python. Every example shows its real output, and each lesson ends with a practice problem so you are ready for coding interviews.
Progress is saved in this browser. Accounts are coming later.
- Lessons available
- 47
- In the full course
- 47
- Beginner
Start from zero. No experience needed.
- Intermediate
Combine ideas to solve real problems.
- Advanced
The techniques used in professional work.
Course syllabus
All 47 lessons are available. Start anywhere, or follow the parts in order.
Part 1 · Beginner
Foundations
What data structures and algorithms are, how to measure an algorithm's speed and memory with Big O, and recursion.
Part 2 · Beginner
Arrays, Strings and Hashing
The most used structures in practice, and the patterns that solve most array and string problems.
Part 3 · Beginner
Linked Lists
Nodes and pointers: building singly and doubly linked lists and solving classic list problems.
Part 4 · Beginner
Stacks and Queues
Last-in-first-out and first-in-first-out structures, and the monotonic stack pattern.
Part 5 · Intermediate
Searching and Sorting
Binary search and the sorting algorithms every programmer should understand.
Part 6 · Intermediate
Trees and Heaps
Hierarchical data: binary trees, traversals, binary search trees, balancing, heaps and tries.
Part 7 · Intermediate
Graphs
Networks of connected things: representing graphs, searching them, and finding shortest paths.
Part 8 · Advanced
Algorithm Techniques
Backtracking, greedy choices and dynamic programming: the techniques behind the hardest problems.
Part 9 · Intermediate
DSA Interview Preparation
How to approach coding interviews, and questions from beginner to advanced with full solutions.
Keep going with DSA
Become a Better Programmer
Get new tutorials, coding challenges, and cheat sheets.