Every link, in one place
The shelf below is what to keep bookmarked all year. Underneath it, every reference from every stage is grouped by the topic it belongs to, so you can go straight to the right one without hunting through the roadmap. 108 links in total.
Keep these open all year
Python for EverybodyCourseA complete free course for absolute beginners. The best single starting point for weeks 1 to 12.py4e.comThe Python tutorialDocsThe official walkthrough of the language. Terse, and always correct.docs.python.org/3/tutorial/index.htmlAutomate the Boring StuffBookFree online book. Practical projects, very readable.automatetheboringstuff.comVisuAlgoVisualAnimated visualisations of nearly every structure in this roadmap. When something will not click, come here first.visualgo.net/enBig-O cheat sheetVisualOne page listing the speed of every structure and sort. Keep it bookmarked from week 13 onwards.bigocheatsheet.comKhan Academy — AlgorithmsCourseFree and beginner-friendly. The gentlest correct treatment of the core algorithms.khanacademy.org/computing/computer-science/algorithmsMIT 6.006 — Introduction to AlgorithmsVideoA full MIT course, free. Harder than Khan Academy. Its dynamic programming lectures are the best available anywhere.ocw.mit.edu/courses/6-006-introduction-to-algorithms-spring-2020MIT 6.046 — Design and Analysis of AlgorithmsVideoThe advanced follow-up. Only after 6.006.ocw.mit.edu/courses/6-046j-design-and-analysis-of-algorithms-spring-2015GeeksforGeeks DSA hubDocsEnormous coverage with code for everything. Quality varies; good for a second explanation.geeksforgeeks.org/dsa/dsa-tutorial-learn-data-structures-and-algorithmsCP-AlgorithmsDocsRigorous, careful write-ups. Harder going, and the one to trust when other sources disagree.cp-algorithms.comCLRS — Introduction to AlgorithmsBookThe standard academic reference. A paid book, and not a first read — use it to look things up.mitpress.mit.edu/9780262046305/introduction-to-algorithmsNeetCode roadmapPracticePractice problems grouped by pattern. The NeetCode 150 maps cleanly onto weeks 15 to 34.neetcode.io/roadmapLeetCodePracticeThe largest problem set. Use NeetCode to decide what to solve here, or you will grind aimlessly.leetcode.comHackerRank — data structuresPracticeAn alternative problem set, with a gentler difficulty curve than LeetCode.hackerrank.com/domains/data-structuresroadmap.sh — DSA curriculumDocsThe curriculum this track is structured on.roadmap.sh/datastructures-and-algorithms
Week 0 · Getting your computer ready
What a code editor is for
Download VS CodeDocsThe editor itself. Free, no account needed.code.visualstudio.comPython extension for VS CodeDocsInstall this after VS Code. It adds Python understanding, running, and debugging.marketplace.visualstudio.com/itemsVS Code Python setup walkthroughDocsStep by step with screenshots. Go here first if anything above does not work.code.visualstudio.com/docs/python/python-tutorial
Weeks 1–3 · Telling the computer what to do
Variables and types
Python tutorial: an informal introductionDocsThe official first chapter. Covers numbers and strings from zero.docs.python.org/3/tutorial/introduction.htmlPython for Everybody — Dr ChuckCourseA free full course, genuinely paced for people who have never programmed. The best single starting point if the official docs feel dry.py4e.com
Loops — repeating work
Python tutorial: for statements and range()DocsOfficial coverage, including the range() function and how its counting works.docs.python.org/3/tutorial/controlflow.htmlAutomate the Boring Stuff, chapters 1–2BookFree online book. Very practical, with lots of small runnable examples.automatetheboringstuff.com
Weeks 4–6 · Reusable steps, and Python's built-in containers
Debugging
VS Code: Python debuggingDocsHow to set breakpoints and step through code in the editor you are already using.code.visualstudio.com/docs/python/debuggingPython docs: pdb, the built-in debuggerDocsThe terminal-based debugger, for when you are not in an editor. Worth knowing it exists.docs.python.org/3/library/pdb.html
Weeks 10–12 · Building your own kinds of thing
Classes and objects
Python tutorial: classesDocsThe official chapter. Sections 9.3 and 9.4 are the ones that matter most right now.docs.python.org/3/tutorial/classes.htmlReal Python: object-oriented programmingCourseA gentler, example-heavy walkthrough if the official docs move too fast.realpython.com/python3-object-oriented-programming
A gentle first look at recursion
Khan Academy: recursionCourseFree, visual, and paced for people meeting the idea for the first time.khanacademy.org/computing/computer-science/algorithms/recursive-algorithms/a/recursionPython docs: the recursion limitDocsWhy deep recursion stops, and the switch that changes the limit. Read it; do not raise it.docs.python.org/3/library/sys.html
Weeks 13–14 · How to say whether code is fast
Big-O notation
Khan Academy: asymptotic notationCourseThe gentlest correct introduction. Start here if the idea is new.khanacademy.org/computing/computer-science/algorithms/asymptotic-notation/a/asymptotic-notationBig-O cheat sheetVisualA one-page table of the cost of every structure and sort in this roadmap. Bookmark it — you will use it all year.bigocheatsheet.comMIT 6.006, lecture 1VideoA full university course, free. Lecture 1 covers this rigorously. Harder going than Khan Academy — come back once the basics land.ocw.mit.edu/courses/6-006-introduction-to-algorithms-spring-2020GeeksforGeeks: analysis of algorithmsDocsWorked examples of deriving the cost of small pieces of code.geeksforgeeks.org/dsa/analysis-of-algorithms-set-1-asymptotic-analysis
Recursion and the call stack
Khan Academy: recursive algorithmsCourseVisual, beginner-paced treatment with worked examples.khanacademy.org/computing/computer-science/algorithms/recursive-algorithms/a/recursionGeeksforGeeks: introduction to recursionDocsMany small examples, useful for drilling the base-case habit.geeksforgeeks.org/dsa/introduction-to-recursion-data-structure-and-algorithm-tutorialsPython docs: the recursion limitDocsWhat the limit is and why it exists.docs.python.org/3/library/sys.html
The small amount of maths you need
Khan Academy: modular arithmeticCourseClock arithmetic explained from scratch, no prerequisites.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/what-is-modular-arithmeticCP-Algorithms: number theoryDocsRigorous write-ups. Harder than Khan Academy — use as a reference rather than a first read.cp-algorithms.com/algebra/binary-exp.html
Weeks 15–19 · Structures that lay things out in a line
Linked lists
GeeksforGeeks: linked listDocsThe most complete free walkthrough, with all the standard operations drawn out.geeksforgeeks.org/dsa/linked-list-data-structurePython docs: collections.dequeDocsPython's built-in doubly linked list. Use this rather than your own, after you have written one once.docs.python.org/3/library/collections.htmlVisuAlgo: linked list animationVisualWatch the pointers rewire step by step. Far clearer than a static diagram.visualgo.net/en/list
Hash tables
GeeksforGeeks: hashingDocsHash functions, collisions and resizing, with the diagrams you need to build one.geeksforgeeks.org/dsa/hashing-data-structurePython docs: how objects are hashedDocsWhat Python requires of a key, and why lists cannot be keys.docs.python.org/3/reference/datamodel.htmlVisuAlgo: hash table animationVisualWatch collisions happen and get resolved.visualgo.net/en/hashtable
Weeks 20–25 · Trees and graphs
Self-balancing trees, and why databases care
GeeksforGeeks: AVL treesDocsThe clearest introduction to rotations. Start here.geeksforgeeks.org/dsa/introduction-to-avl-treeGeeksforGeeks: B-treesDocsWhy wide and shallow beats narrow and deep when disks are involved.geeksforgeeks.org/dsa/introduction-of-b-tree-2PostgreSQL: B-tree indexesDocsA real production database explaining its own index structure. Read this to see the theory used in earnest.postgresql.org/docs/current/btree.html
Union-find
GeeksforGeeks: disjoint set and union-findDocsStep by step, including both optimisations.geeksforgeeks.org/dsa/introduction-to-disjoint-set-data-structure-or-union-find-algorithmCP-Algorithms: disjoint set unionDocsA more rigorous treatment with proofs, once the basic version makes sense.cp-algorithms.com/data_structures/disjoint_set_union.html
Weeks 26–30 · The classic algorithms
Binary search
Khan Academy: binary searchCourseThe clearest beginner explanation, with the boundary pitfalls called out.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-searchPython docs: the bisect moduleDocsPython's built-in correct implementation. Use it in real code once you have written your own.docs.python.org/3/library/bisect.html
Sorting
VisuAlgo: sorting animationsVisualWatch every sort run side by side on the same data. The fastest way to understand the differences.visualgo.net/en/sortingKhan Academy: merge sortCourseCareful beginner walkthrough of the divide-and-combine idea.khanacademy.org/computing/computer-science/algorithms/merge-sort/a/overview-of-merge-sortPython: sorting HOWTODocsHow to sort by custom keys in real code. Immediately practical.docs.python.org/3/howto/sorting.htmlThe Timsort design notesDocsThe actual engineering notes for Python's sort. Dense, and a genuinely interesting read once sorting makes sense.github.com/python/cpython/blob/main/Objects/listsort.txt
Breadth-first and depth-first search
Khan Academy: breadth-first searchCourseBeginner-paced, with the shortest-path property explained properly.khanacademy.org/computing/computer-science/algorithms/breadth-first-search/a/breadth-first-search-and-its-usesGeeksforGeeks: BFSDocsCode and worked examples.geeksforgeeks.org/dsa/breadth-first-search-or-bfs-for-a-graphGeeksforGeeks: DFSDocsThe same for depth-first, including recursive and iterative versions.geeksforgeeks.org/dsa/depth-first-search-or-dfs-for-a-graph
Shortest paths
GeeksforGeeks: Dijkstra explainedDocsA gentle walkthrough with diagrams. Read this first.geeksforgeeks.org/dsa/dijkstras-shortest-path-algorithm-greedy-algo-7CP-Algorithms: DijkstraDocsCareful and correct. The reference to work from when you implement it.cp-algorithms.com/graph/dijkstra.htmlCP-Algorithms: Bellman-FordDocsNegative weights and negative-cycle detection.cp-algorithms.com/graph/bellman_ford.html
Weeks 31–34 · Choosing the right approach
Divide and conquer
GeeksforGeeks: the Master TheoremDocsHow to get the cost of a divide-and-conquer algorithm without guessing.geeksforgeeks.org/dsa/advanced-master-theorem-for-divide-and-conquer-recurrencesMIT 6.046: divide and conquerVideoThe advanced MIT course. Rigorous; use it once the basics are comfortable.ocw.mit.edu/courses/6-046j-design-and-analysis-of-algorithms-spring-2015
Dynamic programming
MIT 6.006: the dynamic programming lecturesVideoThere are four of them and they are the best free explanation available. Watch all four.ocw.mit.edu/courses/6-006-introduction-to-algorithms-spring-2020GeeksforGeeks: dynamic programmingDocsThe hub, with every canonical problem worked through.geeksforgeeks.org/dsa/dynamic-programmingPython docs: functools.cacheDocsOne decorator that turns a slow recursion into a fast one. Try it on your Fibonacci immediately.docs.python.org/3/library/functools.html
Two pointers, sliding windows and prefix sums
GeeksforGeeks: two pointersDocsThe technique with worked examples.geeksforgeeks.org/dsa/two-pointers-techniqueGeeksforGeeks: sliding windowDocsFixed and variable window sizes.geeksforgeeks.org/dsa/window-sliding-techniqueNeetCode roadmapPracticeProblems grouped by pattern rather than by topic, which is exactly what this stage is training.neetcode.io/roadmap
Weeks 35–36 and beyond · Optional depth