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

MIT 6.046J: Design and Analysis of Algorithms

6.046J — renumbered 6.1220 in MIT's current catalog, but still searched overwhelmingly by its old number — is the advanced algorithms course following 6.006: divide and conquer, randomized algorithms, amortization, network flow, approximation, and complexity. The OCW lectures are a staple for advanced self-study.

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

Build my 6.046J study plan

What makes it hard

Where 6.006 teaches techniques, 6.046 demands invention: psets routinely require designing novel algorithms with full correctness and runtime proofs. Randomized analysis and reductions are the steepest material, and the proof burden is heavier than most students expect even after 6.006.

What you'll cover

  • Divide and conquer
  • Amortized analysis
  • Randomized algorithms
  • Network flow
  • Linear programming basics
  • NP-completeness and approximation algorithms

The 6.046J study guide

How to study for MIT 6.046J, step by step.

  1. 1

    Confirm 6.006 mastery before starting

    6.046 assumes you can apply every 6.006 technique fluently — it spends its time on invention, not review. If DP or graph algorithms are shaky, fix that first; the proof burden here leaves no slack.

  2. 2

    Let pset problems sit overnight

    These problems require designing novel algorithms, and insight arrives on the second or third spaced attempt. Read every problem the day the pset opens, then return across multiple days.

  3. 3

    Drill randomized analysis as its own skill

    Expectation bounds, indicator variables, and probabilistic arguments are the steepest material. Work the recitation problems on randomization twice — once with notes, once cold.

  4. 4

    Write complete proofs, then audit them

    Full correctness and runtime proofs are the deliverable, enrolled or self-studying. For OCW learners, compare against posted solutions only after a genuine attempt, line by line.

  5. 5

    Schedule the marination with Fennie

    Upload the 6.046 calendar or your OCW sequence and Fennie's Daily Plan blocks sustained, spaced pset time and queues technique review before each unit needs it, with practice questions generated from the actual materials. Free to start.

    Start my 6.046J plan free

How Fennie helps with 6.046J

Daily Plans block sustained, spaced time for 6.046 psets — problems that need to sit overnight before insight strikes. Chat through a probabilistic analysis step by step when the expectation bounds blur, and review each technique with practice questions before the pset that needs it.

FAQ

Is 6.046 harder than 6.006?

Yes — it shifts from applying techniques to inventing algorithms and proving them correct. The pset problems are open-ended in a way 6.006's mostly aren't.

Is 6.046 now called 6.1220?

Yes — MIT's 2022 EECS renumbering made it 6.1220, but the OCW materials and most online discussion still use 6.046J. Same course lineage either way.

Do I need 6.046 for software interviews?

No — 6.006 covers nearly everything interviews test. 6.046 is for depth: research, competitive programming, and roles where algorithm design is the actual job.

Pass 6.046J with a plan, not a cram

Upload your 6.046J materials and Fennie generates a Daily Plan paced to your deadline — plus chat, flashcards, and quizzes built from the actual course content.

Get started free

More MIT courses