Starting from absolutely nothing — no assumed knowledge. Every concept explained simply. Math taught when needed. One topic per day. No rush.
Understanding what DSA even is, and the small amount of math you need.
| Day | File | Topic |
|---|---|---|
| 1 | phase-0-foundations/day-01-what-is-dsa.md |
What is DSA? Why learn it? |
| 2 | phase-0-foundations/day-02-math-exponents.md |
Math: Exponents (powers) |
| 3 | phase-0-foundations/day-03-math-logarithms.md |
Math: Logarithms |
| 4 | phase-0-foundations/day-04-math-modulo.md |
Math: Modulo (remainder) |
How to measure if your code is fast or slow. You need this before anything else.
| Day | File | Topic |
|---|---|---|
| 5 | phase-1-big-o/day-05-big-o-intro.md |
What is Big O? |
| 6 | phase-1-big-o/day-06-big-o-common.md |
O(1), O(n), O(n²), O(log n), O(n log n) |
| 7 | phase-1-big-o/day-07-big-o-practice.md |
Reading code and finding its Big O |
The most basic and most used data structure.
| Day | File | Topic |
|---|---|---|
| 8 | phase-2-arrays/day-08-arrays-intro.md |
What is an array? How does it work in memory? |
| 9 | phase-2-arrays/day-09-arrays-methods.md |
Array methods and their Big O |
| 10 | phase-2-arrays/day-10-arrays-problems-1.md |
First easy problems |
| 11 | phase-2-arrays/day-11-arrays-two-pointers.md |
Two Pointers technique |
| 12 | phase-2-arrays/day-12-arrays-sliding-window.md |
Sliding Window technique |
| 13 | phase-2-arrays/day-13-arrays-prefix-sum.md |
Prefix Sum technique |
The second most important data structure. Makes many problems easy.
| Day | File | Topic |
|---|---|---|
| 14 | phase-3-hashmaps/day-14-hashmaps-intro.md |
What is a Hash Map? How does it work? |
| 15 | phase-3-hashmaps/day-15-hashmaps-problems-1.md |
Frequency counter pattern |
| 16 | phase-3-hashmaps/day-16-hashmaps-problems-2.md |
More hash map problems |
Working with text.
| Day | File | Topic |
|---|---|---|
| 17 | phase-4-strings/day-17-strings-intro.md |
Strings — how they work, methods |
| 18 | phase-4-strings/day-18-strings-problems-1.md |
Palindromes, anagrams, reversal |
| 19 | phase-4-strings/day-19-strings-problems-2.md |
Substring problems |
A different way to store a sequence of items.
| Day | File | Topic |
|---|---|---|
| 20 | phase-5-linked-lists/day-20-linked-lists-intro.md |
What is a Linked List? |
| 21 | phase-5-linked-lists/day-21-linked-lists-problems-1.md |
Traversal, reverse, find middle |
| 22 | phase-5-linked-lists/day-22-linked-lists-problems-2.md |
Cycle detection, merge |
Two structures with strict rules about how you add/remove items.
| Day | File | Topic |
|---|---|---|
| 23 | phase-6-stacks-queues/day-23-stacks-intro.md |
What is a Stack? |
| 24 | phase-6-stacks-queues/day-24-queues-intro.md |
What is a Queue? |
| 25 | phase-6-stacks-queues/day-25-stacks-queues-problems.md |
Problems using stacks and queues |
Functions that call themselves. Needed for trees, graphs, and more.
| Day | File | Topic |
|---|---|---|
| 26 | phase-7-recursion/day-26-recursion-intro.md |
What is recursion? How does it work? |
| 27 | phase-7-recursion/day-27-recursion-problems-1.md |
Basic recursion problems |
| 28 | phase-7-recursion/day-28-recursion-problems-2.md |
Harder recursion problems |
How to put things in order — and why some ways are faster than others.
| Day | File | Topic |
|---|---|---|
| 29 | phase-8-sorting/day-29-bubble-sort.md |
Bubble Sort (simple, slow) |
| 30 | phase-8-sorting/day-30-selection-insertion-sort.md |
Selection Sort & Insertion Sort |
| 31 | phase-8-sorting/day-31-merge-sort.md |
Merge Sort (fast, uses recursion) |
| 32 | phase-8-sorting/day-32-quick-sort.md |
Quick Sort (fast, commonly used) |
How to find things efficiently.
| Day | File | Topic |
|---|---|---|
| 33 | phase-9-searching/day-33-linear-search.md |
Linear Search |
| 34 | phase-9-searching/day-34-binary-search.md |
Binary Search (O(log n) — very fast) |
| 35 | phase-9-searching/day-35-binary-search-problems.md |
Binary search problems |
Hierarchical data. Used everywhere (file systems, databases, HTML DOM).
| Day | File | Topic |
|---|---|---|
| 36 | phase-10-trees/day-36-trees-intro.md |
What is a Tree? Terminology |
| 37 | phase-10-trees/day-37-binary-search-tree.md |
Binary Search Tree |
| 38 | phase-10-trees/day-38-tree-dfs.md |
DFS — Depth First Search on trees |
| 39 | phase-10-trees/day-39-tree-bfs.md |
BFS — Breadth First Search on trees |
| 40 | phase-10-trees/day-40-tree-problems.md |
Tree problems |
The most general structure. Everything connects to everything.
| Day | File | Topic |
|---|---|---|
| 41 | phase-11-graphs/day-41-graphs-intro.md |
What is a Graph? |
| 42 | phase-11-graphs/day-42-graphs-bfs-dfs.md |
BFS and DFS on graphs |
| 43 | phase-11-graphs/day-43-graphs-problems.md |
Graph problems |
Breaking big problems into smaller ones. Most feared topic — made simple.
| Day | File | Topic |
|---|---|---|
| 44 | phase-12-dynamic-programming/day-44-dp-intro.md |
What is DP? Memoization |
| 45 | phase-12-dynamic-programming/day-45-dp-tabulation.md |
Bottom-up DP (tabulation) |
| 46 | phase-12-dynamic-programming/day-46-dp-classic-problems.md |
Classic DP problems |
| 47 | phase-12-dynamic-programming/day-47-dp-more-problems.md |
More DP problems |
Techniques that appear in many interview problems.
| Day | File | Topic |
|---|---|---|
| 48 | phase-13-patterns/day-48-two-pointers-advanced.md |
Two Pointers — advanced |
| 49 | phase-13-patterns/day-49-sliding-window-advanced.md |
Sliding Window — advanced |
| 50 | phase-13-patterns/day-50-backtracking.md |
Backtracking |
- Do not skip days. Each day builds on the previous one.
- Read slowly. Don't rush to the code. Understand the idea first.
- Write the code yourself. Don't copy-paste. Type it out.
- Solve the practice problems before looking at the answer.
- If something is unclear — re-read it. Then re-read it again.
Every day file has:
- Simple explanation — what is this thing, in plain English
- Real-world analogy — connect it to something you already know
- How it works — step by step, no skipping
- JavaScript code — with every line explained
- Practice problems — you solve these yourself
- Solutions — with full explanation