Free, dated, 125 weeks. No paywall, ever.
Get genuinely cracked at programming.Two interpreters, then all of Knuth.
Build two interpreters with Crafting Interpreters, then work through every volume of The Art of Computer Programming, with two NeetCode problems a week and three Zachtronics games along the way. Pick a start date and every week tells you exactly what to do. It's hard on purpose.
Six phases. 125 weeks.
About 8 to 12 hours a week. Each phase has a date on every week, so you always know where you stand.
- 01Weeks 1–16Crafting InterpretersTwo interpreters
- 02Weeks 17–47TAOCP Vol 1Fundamental Algorithms
- 03Weeks 48–72TAOCP Vol 2Seminumerical Algorithms
- 04Weeks 73–99TAOCP Vol 3Sorting and Searching
- 05Weeks 100–115TAOCP Vol 4ACombinatorial Algorithms, Part 1
- 06Weeks 116–125TAOCP Vol 4BCombinatorial Algorithms, Part 2
Structure, feedback, and proof you did the work.
Know what to do this week.
Pick a start date and every week has a date and a short list: which chapter or section to read, which exercises to do, two NeetCode problems. Pace settings stretch it out, and catch-up re-dates the rest when life happens.
Prove it, don't tick it.
Checkboxes are easy to lie to. Interpreter chapters pass the book's own test suite, LeetCode comes from your public profile, and MIX programs run in an emulator. Your profile shows what you actually did.
Do it with people.
Start with a monthly cohort so the people around you are on the same chapter. A weekly email says what is due. Share cards for your profile when you finish something worth bragging about.
How verification works
Nothing here takes your word for it.
- InterpretersGitHub Actions
- Push your jlox or clox to GitHub. A workflow runs the chapter's tests from the book's official suite, and the chapter is done when they pass.
- LeetCodeYour public profile
- Link your LeetCode username. Accepted NeetCode 150 problems on your public profile count toward the week.
- KnuthA MIX emulator in your browser
- MIX exercises are graded by running your program against test cases in an emulator. Reading is on your honor; the guides help you know when you actually understood it.
Build it. Then take it further.
Start by building a real language twice: a tree-walking interpreter in Java, then a bytecode VM with a garbage collector in C. Then slow down and read Knuth properly, writing MIX, doing the exercises and learning to analyze an algorithm down to the last comparison. Most people never get past the preface. You'll have a reading guide for every section.
Most people who start won't finish. Week 0 is an on-ramp if you're newer to this, and catch-up re-dates your path when life happens. Two working interpreters is already more than most programmers ever build.
Questions
Is it really free?
Yes. No paywall, no premium tier, no ads, and nothing gets unlocked by paying. The site is free forever. What costs money is outside the site: the Knuth books (Crafting Interpreters is free online) and three cheap games. If you want to help keep it running, you can buy Dane a book.
Why Knuth?
Because The Art of Computer Programming is the deepest treatment of algorithms there is, and almost nobody actually works through it. It teaches you to analyze, not just to recall. Crafting Interpreters comes first because it gets you writing a lot of real code in Java and C, so that by week 17 you are ready to slow down and do math.
Do I need to buy TAOCP?
Eventually, yes. Knuth's books are not free online, and you will need Volumes 1 through 4B by the end. You don't need them for the first 16 weeks, so there is time. Libraries, used copies and older editions all work for most of it. What you need lists the free options first and the cheapest ways to buy everything else, with what the whole path costs.
What if I fall behind?
Everyone does. Catch-up re-dates the rest of your path from where you actually are, so you never stare at six weeks of red. You can change your pace at any time, or join a later cohort. Falling behind is normal; stopping is the thing to avoid.
Week 1 starts whenever you do.
Free forever. Sign in with Google or GitHub.