30d roadmap · 6 milestones

DSA Practice

A 30-day algorithmic sprint covering the NeetCode roadmap surface area. End able to recognise the pattern from problem shape, implement cleanly, and reason about complexity without slipping.

Outcome: Solve canonical patterns from scratch — no references, explain the invariant, add one edge-case test.

DSA & Implementation

How to work this roadmap

Treat each milestone as a claim that must be supported by evidence. Before reading, write what you think the mechanism does and where it will fail. After studying the linked concepts, run the drills without copying an answer, preserve the output, and revise the explanation. Move forward when you can connect the milestone goal to a working implementation, benchmark, architecture decision, or reviewable design artifact.

The 30d horizon is a sequencing aid, not a completion badge. Spend more time where your prediction and the observed behavior disagree. Keep a short decision log containing the mechanism selected, alternatives rejected, expected failure mode, measurement used, and remaining uncertainty. Review that log with FSRS prompts so the roadmap produces durable system judgment rather than a temporary tour of terminology.

At the end, explain Solve canonical patterns from scratch — no references, explain the invariant, add one edge-case test. from first principles to a reader outside the domain. A strong explanation should survive follow-up questions about correctness, cost, latency, resource use, security, recovery, and operational visibility. If it cannot, return to the milestone that contains the missing mechanism and build a smaller falsifiable example.

Milestones

Milestone 2

Days 6-10 — Linear structures

Stack, linked list, math/geometry — the bread-and-butter scaffolds.

Concepts

Milestone 4

Days 17-21 — Search & greedy

Two of the highest-leverage problem-solving frames.

Concepts

Milestone 6

Days 28-30 — DP & bit tricks

The "hardest" categories — 1D/2D DP and bit manipulation.

Concepts

Start this roadmap in the interactive app →