Skip to main content
MIT
Electrical Engineering & Computer Science
12 units

MIT 6.006: Introduction to Algorithms

6.006 is MIT's core algorithms class, covering sorting, hashing, trees, graph algorithms, shortest paths, and dynamic programming, with emphasis on both rigorous analysis and Python implementation. Its OpenCourseWare lectures are a global standard for learning algorithms and prepping technical interviews.

Fennie is independent and not affiliated with MIT. This is an unofficial study guide.

What makes it hard

Dynamic programming is the famous wall, and the psets require designing algorithms and arguing correctness, not just coding known ones. The exams test whether you can adapt techniques to novel problems under time pressure. Pattern-matching to memorized solutions reliably fails.

What you'll cover

  • Asymptotic analysis
  • Sorting and binary search trees
  • Hashing
  • Graph algorithms (BFS, DFS)
  • Shortest paths (Dijkstra, Bellman-Ford)
  • Dynamic programming

The 6.006 study guide

How to study for MIT 6.006, step by step.

  1. 1

    Verify your discrete math is ready

    6.006 leans on proofs, induction, and graph theory at the 6.042 level from week one. If correctness arguments feel foreign, spend a week reviewing before starting. It pays for itself many times over.

  2. 2

    Run each unit as lecture, recitation problems, then pset

    Watch or attend the lecture, work the recitation problems to convert understanding into skill, then take on the pset. Self-learners on OCW should follow the same three-stage rhythm rather than jumping straight to psets.

  3. 3

    Give dynamic programming spaced, repeated attempts

    DP is 6.006's famous wall, and it falls to repetition, not brilliance. Work DP problems across multiple sessions over weeks. Define the subproblem in words before writing any recurrence.

  4. 4

    Check OCW solutions only after an honest attempt

    The posted pset and exam solutions are a gift for self-learners when used correctly. Attempt each problem fully, then compare your reasoning against the solution and rework the misses days later.

Today

Today's 6.006 plan

Preview
65 min

What a Fennie Daily Plan looks like for 6.006. Yours is built from your own syllabus and adapts every day to your deadlines and progress.

0 / 4 done~65m remaining
Keep this plan free

First plan free, no card required. Fennie is independent and unaffiliated with your school.

FAQ

Is 6.006 hard?

Yes. It's the course where MIT students learn to design algorithms rather than use them, and dynamic programming humbles nearly everyone at first. Spaced practice on novel problems is the only reliable preparation.

How long does 6.006 take to self-study?

A serious OCW run takes most self-learners 3-4 months at 8-12 hours a week, including psets. It assumes prior programming and discrete math comfort.

What should I know before 6.006?

Python programming and discrete math at the level of 6.042: proofs, induction, basic graph theory. Going in without proof experience makes the correctness arguments much harder.

More MIT courses