Every track · one week at a time

This week,
and nothing else.

One week at a time, every track, only the part that is due — and a tick here is a tick on the track page, because there is one copy of everything.

On your phone

Aug 2026 onward · all tracks, one scale

Where the
collisions are.

The week page is deliberately short-sighted. This one is the corrective: every dated block on every track, drawn to the same scale, so the weeks that are quietly impossible are visible in September rather than discovered in October.

The dates that do not move

Every deadline, each class weekend, each four-day and the vacation, and the plan's own turning points — the next six months. The chart above is the shape; this is the list.

The sequencing decision

Three tracks, one calendar, and only one of them has deadlines set by somebody else. That settles the order — the rest is making the consequences explicit rather than letting them happen quietly.

The fall term wins until 25 October

NIC-6913 runs four class weekends and five quizzes between 22 August and 25 October. The dates are fixed, the room is ICC-B in Bethesda, and a missed quiz is a graded event. Nothing else on this site has that property, so nothing else gets to argue with it.

What that costs. The CS plan was written in August against an August calendar and has not been on it since. That gap does not close by being read every morning; it closes by re-basing the phase dates once, on a date that is already chosen — 26 October, the Monday after the last taught weekend. Until then CS is on a maintenance floor of about three hours a week, which is enough to stop it going cold and not enough to pretend it is the priority.

What it does not cost. Fitness is not a project and does not get paused for a term, because the thing that makes it work is that it never stops. What it gets instead is a split that already knows about the class weekends: sessions that fall on one are removed from that week rather than carried as a debt you were never going to pay.

Further out. The position is military, so nothing here ends the degree. Separation is roughly eighteen months away — spring 2028 — which puts the transition window (TAP, clearance disposition, the move) around spring 2027. Not a track yet; a date to have on the horizon so it is not a surprise.

National Intelligence College · MSTI · MEP weekend program

Two courses,
one weekend.

Time to scaleTap a block to jump
0 hrs

Two courses on the same four weekends. NIC-6913 Science & Technology Intelligence with Dr. Rocco Blais, and NIC-6122 Peacekeeping and Stability Operations with Professor Bill Colligan. Weekend 1 was 22–23 Aug; the rest are 12–13 Sep, 3–4 Oct and 24–25 Oct.

What a class weekend actually looks like

Friday — travel, FBNC to ICC-B. Saturday — 6122 seminar at 0730 · 6913 class 1340–1700. Sunday — 6122 seminar at 0730 · 6913 class 1200–1520, then the drive home.

All four weekends are in person, so each one is a three-day commitment: roughly thirteen hours of class and ten of travel. That is the fact the rest of this planner is built around. Three of the four also carry a 6122 deliverable due at 0730 — before the day begins, not at the end of it — which means finished Thursday night, because Friday is the drive. A class weekend is not a buffer; it is the most expensive time in the term.

Both courses are discussion-led rather than lecture-led, which changes what preparation means. Blais runs 6913 Socratically — dialogue over lecture, probing questions, shared responsibility. Colligan runs 6122 as a graduate seminar with short framing talks, structured discussion, small-group exercises and student presentations, and grades participation at 10%. In a lecture course the reading is how you keep up. In both of these it is the price of admission.

Each course's cycles are split into read-ahead and the weekend itself, because that is how the work actually falls. Three weeks of runway per weekend, shared between two syllabi, and every failure mode of this term is the same one: leaving the runway unused and then meeting the weekend at speed.

NIC-6913 · Science & Technology Intelligence

Dr. Rocco Blais · Saturdays 1340–1700, Sundays 1200–1520 · ICC-B Roberdeau Hall 2E-200E · office 2E-500V. Ten sessions across the four weekends — weekends 2 and 3 run three sessions each. Textbooks are OpenStax Chemistry: Atoms First 2e (ch 1–2) and Muller, Physics and Technology for Future Presidents (ch 1–9, PDF on Blackboard).

NIC-6122 · Peacekeeping and Stability Operations

Professor Bill Colligan, Strategic Studies · Saturdays and Sundays 0730 · classroom TBD · office 2E-300T. Eight seminar sessions and four graded deliverables. Three are due at 0730; the End State brief is presented in the Sunday session of weekend 3.

Travel · all four weekends in person

FBNC to ICC-B, roughly 300 miles, four times. The hours are counted here rather than assumed away — about ten per weekend on top of thirteen hours of class, which is what makes a class weekend the most expensive time in the term.

6122 assignments

The three written ones are due at 0730, before the session rather than after it; the End State brief is presented live on 4 October.

Turabian 9th edition, or ICD 203 for classified sources — and if an assignment is classified, an unclassified placeholder goes into Blackboard by the deadline while the real submission is coordinated with the instructor.

Three rules worth knowing before you need them

Late work. Nothing higher than a B for the first 48 hours. After 48 hours it is an F, and a referral to the Dean of Faculty and Academic Programs. An extension has to be requested in advance and confirmed in writing — email or Blackboard message is enough. Trouble uploading is explicitly not a reason for a delay; you email it to Colligan and fix the upload afterwards.

AI. Different for every assignment, so it is written into each row. The Reading Review permits none at all. The Mid Term allows it to organise but not to write. Both briefs allow it for gathering data and producing graphics.

Attendance. More than one missed session in an eight-week term risks academic penalty or withdrawal. Eight sessions across four weekends means a missed weekend is two sessions.

AssignmentWeightDueWhat it is

6913 assignments

The quizzes are 15% of this course. The written work is 75%, and nearly half of the whole grade is decided at weekend 2.

Three things this matrix is for

Two approval gates. The STEM Summary Paper needs its topic approved by session 4 and the Formal Oral Presentation needs its NIC report approved by session 6. Neither is a deliverable, both are easy to miss, and together they gate 30% of the course.

One conflict to resolve with Blais. The schedule table says every assignment is due at the start of class; the submission section — and his mail of 22 August — say 2359 on the due date. Those are fourteen hours apart on a day you are in a classroom. This planner assumes the earlier one, which is the only assumption that cannot hurt you. Ask, and correct it.

Late work. Identical to 6122: nothing above a B for the first 48 hours, an F after that, and extensions must be requested in advance and confirmed in writing.

AssignmentWeightDueWhat it is

6913 quizzes

Multiple-choice and short answer on the readings and the concepts from class, due before sessions 2, 4, 6, 8 and 9. Answered in Blackboard under Assignments — the rubric applies only there — and filed as Edmonds_6913_Quiz N. Worth 15% of the course between them.

QuizTopicDueStatus

Class weekends

Four of them, three weeks apart, each carrying both courses across both days. These are the fixed points the rest of the calendar has to bend around — including the training split, which already knows about them and drops any session that lands on one.

WeekendDatesSubjectStatus

The degree

Twelve courses and a thesis. Six are behind you or in front of you this term, which means the back half is exactly as long as the front half was — and every course in it is a choice, where the first four were not.

RequirementDoneThis termLeftConstraint
The shape of what is left

Two courses a term, four terms a year, so the six remaining courses are three terms: winter, spring and summer 2027. The thesis follows them. Nothing about that is tight — but nothing about it has slack either, and a term missed is a quarter added at the far end.

Spring is partly assigned already. MCR 701 runs for MEP students in the spring only, so one of the spring two is spoken for and the other is an elective. That makes winter the term that carries the last core, and summer the term that has to carry two electives with no core left to hide behind.

Four of the five remaining electives must be MSTI. One is free. Spend the free one deliberately rather than discovering in summer 2027 that it was used on whatever had a weekend section open.

TermCourse oneCourse twoStatus

Terms after this one are the shape, not the schedule: the courses are named as core or elective because which specific course fills each slot is the decision the RODC conversation and winter registration settle. Once a term is registered, it gets dated blocks like this one.

Beyond this term

The degree, not the course

RODC — Research Options for Degree Completion, AY2027. The route to finishing, and a decision rather than a form. It wants making while the faculty are still in front of you every three weeks, not in the quiet after the term ends.

MCR 701. Offered to MEP students in the spring only — confirmed by Dr. Bailey in July, after you asked about a weekend section in the fall. So the spring is already partly spoken for, and the open question is which research route it feeds rather than when to take it.

Not local. You are at FBNC, the classroom is at ICC-B, and all four weekends are in person, staying at hers in DC and driving the half hour out to Bethesda each morning — so the term costs roughly forty hours of driving on top of everything the two syllabi ask for, and no lodging. Those hours are on the travel blocks above rather than left implicit, which is why a class week reads as expensive as it actually is.

What this page does not know

Both syllabi are now in. One question is still open.

Every session, reading, weight, due point, approval gate, late policy and AI rule on this page is transcribed from the two syllabi rather than summarised. Where a syllabus says something exact, this page says it exactly.

The open question is 6913's due time. Its schedule table says assignments are due at the start of class; its submission section and Blais's mail of 22 August both say 2359 on the due date. This page plans to the earlier reading because that is the assumption that cannot cost you a grade — but it is an assumption, and one email settles it.

Two smaller ones: 6122's classroom is still listed as TBD, and the 6913 syllabus gives the presentation as due at session 10 (25 Oct) while the session entry asks for visual materials by 23 Oct. Both are on the page as written rather than reconciled by guesswork.

The house · standing · the sink, then fifteen minutes somewhere

Fifteen minutes,
somewhere different.

The sink first — straight after the cook while the pans are warm, or last thing before the focus on a night you do not cook. It keeps a run, and the run ends the first night at home you skip it. Then one reset at 2100, before the wind-down, and each weekday owns a different part of the house — so no evening is ever given over to cleaning and no room goes a week untouched. Saturday takes the job that never gets done, from a rotation, because choosing which job it is has always been the thing that stops it.

Meals · standing · dinner tonight is lunch tomorrow

Cook once,
eat twice.

Four cooks on a normal week, each under thirty minutes and each making at least two portions: tonight's dinner and tomorrow's lunch. The air fryer and the rice cooker are what make thirty minutes true — protein in one, grain in the other, vegetables into the air fryer for the last eight minutes — so most of the half hour is waiting. The Tovala keeps one job: its steam mode brings the lunch portion of chicken, salmon or rice back better than a microwave or a basket ever will.

The week's shape comes from the fixtures already on the planner. Tuesday and Thursday are tennis nights, so Monday cooks three portions and Tuesday is a ten-minute reheat at 2045; Thursday and Friday are the nights out, each paired with the next day's lunch out. On a class week Monday and Wednesday cook three each, Thursday packs the weekend, and Friday to Sunday are eaten in DC, at hers.

The grocery list is generated, not written: this week's recipes times their portions, plus the breakfast and post-training staples, grouped by aisle and tickable on the phone in the store. Twelve recipes rotate so nothing repeats inside a fortnight. No red meat anywhere.

Standing

The parts of eating that do not change week to week, and the one rule each of them carries.

The target

What a portion is for

Around 2,600 kcal and 160–180 g of protein a day, which is maintenance at 162 lb on a push-up-led training week. A dinner or lunch portion here averages about 730 kcal and 48 g protein — estimates from raw-weight ingredient values, and the one figure you control is the cooking oil, at 120 kcal a tablespoon. Breakfast and the post-training food carry another 60 g of protein between them. That adds up without anyone counting, which is the only way it ever adds up.

Chicken is tenderloin — already cutlet-thin, so no knife and eight minutes in the air fryer — and never cooked past 160°F, because overcooking, not the cut, is what makes it chewy the second time — and it never lands on a three-portion night, where the last portion is reheated after tennis; on ground turkey because it is the fastest protein there is; on canned beans, tuna and eggs because they close a protein gap for almost nothing; and on a rice cooker because rice made while you are not watching it is the cheapest satisfying calorie in the kitchen.

Strength and conditioning · standing · no end date

Everything points
at the push-ups.

Time to scaleTap a block to jump
0 hrs

Built from the record AFT of 15 September: 442 of 500, at 6'0" and 162 lb. Sprint-drag-carry 100, run 92, plank 88, hand-release push-ups 83, deadlift 79. The deadlift is the lowest score and the most expensive to raise; push-ups are the gap this plan is arranged around, and the plank, which slipped from 94 in March, is the cheapest points on the sheet.

Why that one number decides the whole plan

Push-ups are the only event in every version of the Army test ever fielded. The run is the second. The plank is in the current test and in the reported three-event version. The deadlift and the sprint-drag-carry are in the current test only — and they are the two you already score highest on.

So if the reporting is right and it goes back to push-ups, plank and run, the two events carrying your score today stop counting, and push-ups go from a fifth of the test to a third. The weakest event becomes more important, not less. That is a rare case where the change-proof move and the highest-value move are the same move.

What follows. Push-ups get frequency — two sessions a week, and in the last block one of them becomes a timed simulation, never to failure, prescribed as a percentage of a tested max. The plank is trained twice a week, in test position, back toward the 3:35 where the points stop. The run gets real interval and tempo work instead of easy miles. The lifting stays for strength and durability rather than for score.

Where the sessions live. In the PT window before work — up at 0635, the session 0650 to 0740, cool down, breakfast, shower, out of the door at 0845 — fifty minutes, and every session is written to fit it. Tennis on Tuesday and Thursday evenings shapes the week: those mornings get the light session, nothing leg-heavy and no intervals; Sunday is a true rest day; Saturday's long run is optional on a week where both lessons happened, because they were the conditioning. On a weekend away — flagged on the week page — the Saturday session travels: the hike is the long easy, a hill or a flight of stairs is the hard part, and the plank needs only a floor.

Sixteen weeks below, from 14 September to the first week of January: push-up base, push-up build, the record AFT on 17 November and a week of recovery, then a peaking block that teaches the raised ceiling to appear inside a two-minute window. They are generated rather than written — a block is a split plus a number of weeks, so writing them out by hand would only be a way of introducing typos.

The generator knows about the NIC class weekends and the travel Fridays. A session that lands on a class day is removed from that week; one that lands on a travel Friday moves to the Thursday. That is why some weeks below have four sessions and others six — the plan working, not the plan slipping.

The blocks

Each has one aim and one rule. The rule is the part that gets broken first, so it is written down.

Checkpoints

Five dates on which the plan finds out whether it is working, instead of finding out on the test. Each floor is the straight line from September to the November target, rounded down a rep, on a day that already tests: the block A retest, a test-order session in block B, the record itself, and the two simulations in block D. Type the actual in and the box turns green or red. A red box changes the next block, and the last column says how; it never moves the record date.

WhenWherePush-upsPlankRunIf short

The five numbers

Measured in September, ordered by how much score is available in each. The last column is yours to fill in from the record AFT on 17 November. Scores are estimates against the published male 22–26 tables and worth re-checking against the current scorecard — but the ranking is not in doubt, and the ranking is what the plan is built on.

EventPoints15 Sep AFTTargetWhy it sits hereRetest

Logging

Use the note field on each session

Every session above has a 💬 note on it. Put the numbers in it — 5×14 HRP @ 40% or 6×400 @ 1:42 is enough. It syncs with everything else and it is what next week's session is written from.

The one number to keep current is the tested 2-minute push-up max, because every push-up prescription in the plan is a percentage of it. Retest at checkpoint 1 on 10 October, checkpoint 2 on 31 October, and on the record test. Between those, train the percentage and resist the urge to find out.

And the rule that makes the rest work: a repeated week is not a failed week. If a session was missed or the reps got ugly, run the same week again rather than taking the scheduled jump. The blocks are built to absorb that; what they cannot absorb is a percentage you did not earn being carried forward for five weeks.

Track three of three · keep warm until 25 Oct · run-up from 26 Oct

Ten weeks
of actual CS.

The eight-phase plan below was written for ten hours a week that stopped existing when the fall term started, and re-dating it would only pretend otherwise. It is shelved — the pages, the content and every tick you made all stay — and what replaces it on the calendar is shaped by one fact.

The August trial produced an offer of a military position. Only the report date is open. So there is no interview to prepare for, and the question the window has to answer is how useful on day one, whenever day one is — which has the same answer whether that day is in January, in June, or never: work in their stack, against real code, closing the gap list the trial produced. The August plan called this the run-up track and never scheduled it.

The gap list, and the strength that paid for it

In your words, from the trial: Kubernetes, Rancher, Argo; being able to intuit how a full codebase interacts; FastAPI; and more you did not know than you did. Against that, one thing that worked — getting a great deal out of Claude Code — and it is the reason there is an offer. The plan is built on both halves.

The gaps are the three things the tool helps least with when the model in your head is missing. You cannot prompt your way to intuiting an architecture, and you cannot debug a cluster without knowing what a Deployment is. So the run-up builds those models by hand — manifests written before they are generated, request paths drawn on paper, five breakages diagnosed from kubectl alone — and puts one rule over all of it that turns the strength into a learning engine: Claude Code writes; you explain. Nothing merges that you cannot walk through with the tool closed.

The sharpest single move for gap 1 is writing the repo's CLAUDE.md. A good one needs you to know how it runs, how it tests, where things live and why — a forcing function for exactly the gap, and something you hand the team on day one. It is week 1, and it is revised in weeks 7 and 9 as the map gains paths.

Where CS50AI went. Its first four units are minimax and propositional logic, which an agent shop does not use; its two lectures that matter, neural networks and attention, are watched inside the run-up. The rest is the next window, listed below undated. Until the term ends: a keep-warm floor on non-class weeks, with the kata in the stack the gap list names.

The gap table

Ranked by how much each would hurt on day one. The last column is the test — a gap is closed when its sentence is true, not when its week is over. The first keep-warm week writes the trial summary — the full list, ranked — and week 1 promotes its top three extras into the slots in weeks 2, 4 and 8.

#GapWhere it closesClosed when

The next window · CS50AI, undated

Seven units, twelve projects, roughly sixty hours. It runs in the spring at spring-term pace if the start date is still open by 17 January, or in the first quiet stretch after it if not. Undated on purpose — a date here would be a guess dressed as a plan.

UnitHoursWhat it is

The shelf

The CS major with the fluff removed — eight phases, ordered, to scale. Kept as written, dates included, as a record of what August thought. Nothing here is scheduled and nothing here is behind. The ledger and the phase pages still work; when a window opens that can hold one of these, it comes down.

Time to scaleTap segment to jump
0 hrs hrs

Four things that aren't phases

The plan runs downward into the machine and never ran upward into operations. These are disciplines rather than topics — they get concentrated hours in Phase 04, but a phase that ends is the wrong shape for them, so each one also has a standing rule that applies from now on.

Testing and CI

The prescription for shipping unstable changes, and the fastest way to stop looking junior in review. Standing rule: no phase project is finished until it has tests that fail when you break it on purpose.

Observability

Logs, metrics and tracing — reading a system you didn't write while it's failing. Standing rule: when something breaks, find it from its output before you read its source.

Evals

For an AI system this is the testing story: a question set with known answers, scored, so you can tell whether a change helped. Standing rule: never claim a retrieval or prompt change improved anything you didn't measure.

Authorization boundaries

Who can see which document, enforced inside the query rather than after it. Carried as a work-track deep dive on the OpenSearch side, where you already have the domain, and revisited in Phase 08.

What you're deliberately not doing

Every one of these is in the JHU catalog. Each is cut for a reason, and each has a known cost you can pay later if you need to.

Basic sciences, 8 credits

Two lab sciences. Zero relevance to the capability you're building.

Calc II and III in full

You need integration for probability and partials for gradients — one week of it, in Phase 06. Nothing else earns its hours.

Mathematical statistics

Estimator theory and hypothesis-testing ritual. Come back only if you go deep on ML or research.

Theory of computation

Skim decidability and halting for the ideas. A full course is philosophy, not leverage.

Compilers and full OS

Phase 04 gives you the working model. The full courses are specialization, not core.

The team course

Replaced by contributing to a real open-source codebase — reading 100k lines you didn't write is the actual skill.

Phase 00 · 12-day sprint + trial fortnight · Aug 5–27 · ~68 hours

Sprint to being useful
on day one.

Time to scaleTap a block to jump
0 hrs

Twelve days, Aug 5 through 16, with the 17th as the deadline rather than a work day. Weekdays run 3.5 hours; the two weekends run 5.5, which is where the lost day gets paid back without raising the weekly average above 25.

The order matters more than the hours: a crude version of the whole pipeline runs by Day 4, and everything after that is improvement rather than assembly. Nothing of yours deploys on the 17th — the point of building it end to end is that you'll be reading and changing someone else's version of the same thing.

Then the phase continues, lightly, through the trial itself. Blocks 13 and 14 run about an hour a day from the 17th to the 27th, and almost none of it is planned in advance — the fortnight generates the syllabus and you close the gaps it exposes. Phase 01 starts on the 28th, once the trial is behind you rather than on top of it.

Which CS50P modules, and when

Ten lectures, nine problem sets, one final project — and under a deadline you're not doing all of it. Six modules block the build and get days assigned; four wait until after the 17th.

ModuleWhat it gives you for the targetWhen
The move that matters

Your Deep Agents build is the CS50P final project. Submit it as such if you want the certificate later. It's the only part of the course with no starter file, no given signature, and no spec — which is exactly why it's the real work rather than an assignment.

The daily rhythm

Twelve days, longer on weekends. At this pace the shape matters more than the hours — these are what keep a sprint from becoming a blur.

  • daily
  • daily
  • daily
  • daily
  • daily

Resource index

CS50P

Ten modules, nine psets, final project. Your current spine.

cs50.harvard.edu/python
Exercism — Python track

146 exercises across 17 concepts, free human mentoring. Not for this sprint — there aren't spare windows. This is what you move to after the 17th, in place of Mimo.

exercism.org/tracks/python
Deep Agents docs

The harness. Overview, quickstart, then tools, subagents, backends, permissions, skills, memory, streaming.

docs.langchain.com · deepagents
deepagents source

Read it, don't just import it. The best architecture lesson available to you right now.

github.com/langchain-ai/deepagents
Kubernetes Python client

List pods, stream logs, apply manifests, watch events. pip install kubernetes

github.com/kubernetes-client/python
Kopf

Operator framework. A full operator in two files: a Dockerfile and a Python module. Stable, v1, well documented.

kopf.dev

Reference and background

Moved off the top of the page. None of it is required before starting — it is here for when you want the reasoning behind a decision, or a rule you half-remember.

The debugging hierarchy — memorise this one

Tracing a bad answer backwards to retrieval-versus-generation is the single most useful skill in this domain, and most people conflate the two. Work down, never sideways:

Bad answer → Was the right evidence in the model's context? Yes → prompt or generation problem. No → was it in the search results? Yes → context-selection problem. No → was it indexed at all? Yes → retrieval or ranking problem. No → ingestion, extraction or chunking problem.

Do not touch the prompt until you know which box failed. Saturday's mastery challenge enforces this: five bad answers, prompt edits forbidden, fix retrieval instead.

The six functions

The whole system reduces to six operations, and everything else is sophistication around them. By Sunday you write all six from memory: chunk_document, embed, index_chunks, search, build_context, answer.

Deliberately not this week: LangChain internals beyond the closing bridge, LangGraph, agents, MCP, fine-tuning, GraphRAG, multimodal RAG, Kubernetes, HNSW mathematics, cluster tuning, custom plugins, anything with a frontend. Know that graph RAG, agentic RAG and long-context-instead-of-retrieval exist; nothing more.

Rewritten on 11 Aug — the task is now known

Six days before the trial, the employer said what the work actually is: integrating their existing retrieval-augmented generation system into another AI offering, starting with several days of reading both implementations, and arriving with at least a passing familiarity with RAG and OpenSearch.

The plan at that moment contained zero mentions of RAG, OpenSearch, chunking, reranking or hybrid search — and seven hours of Kubernetes operators, which the task description does not mention at all. Days 8 through 12 are now a single four-day bootcamp building one cumulative project: OpenSearch without RAG, then vector RAG end to end, then retrieval engineering against an eval set you write yourself, then production thinking and a cold rebuild from an empty directory.

The hours fit, once the travel is accounted for properly. Wednesday is a conference evening and gets two hours, no more. Thursday's 9–11 flight is two usable offline hours for the paper and mechanical work — the architecture drawing, the vocabulary, git — with the hands-on starting when you are home at 12:45. Friday is a full working day from 8 to 4, and the five-hour drive afterwards is additional time rather than a subtraction: ninety minutes of deliberate verbal work in the car and then music, because you will have been at a keyboard for seven hours. About 34 hours across the five days. Against eight-hour Thursdays and Fridays that leaves about three hours of slack — and that slack is buffer, not capacity. Day 2 runs long by design because PDF extraction is a swamp, and the plan's own rule is that hour markers are sequence rather than schedule. Let Friday bleed into Saturday rather than skipping a step. If it all runs clean, the optional closing item is LangChain's RAG tutorial, done last of all, so you can see which parts are the framework's framing and which are the machinery underneath — and that is your on-ramp back to Deep Agents.

The operator work is deferred rather than deleted, on the same terms as the four CS50P modules — genuinely useful, not on the critical path for the next six days. Day 10's first operator is the cheapest version of it and worth coming back to once the trial is behind you.

Added on review — five things that were missing

Async. CS50P never covers it, and both halves of this sprint assume it: the harness runs on an async runtime and kopf handlers are async def. Now an hour on Day 3.

Logging. A container has no console. Logs are the whole debugging surface on the cluster, and retrofitting them on Day 9 is miserable. Now Day 2.

In-code runaway controls. The one genuinely agent-specific risk. Step limits, tool timeouts, retry caps with backoff, a circuit breaker, a token budget checked in state. Day 4, before the first surprise rather than after it.

LangGraph underneath the harness. Deep Agents is a wrapper. If the team writes LangGraph directly, knowing only the wrapper is the gap that surfaces fastest. Ninety minutes on Day 11 building one graph by hand.

Provider swap and reproducibility. Point the harness at a different model — hosted or local — to find where that seam is, and make sure the repo runs from a clean clone. Both are Day 12, both are cheap now and annoying later.

The estimates are ceilings, and the slack has somewhere to go

The per-task minutes after the CS50P modules are budgeted for someone meeting this material cold. You aren't, on the infrastructure half, so expect to come in under on most of the build days. That's fine and it doesn't break anything: the pace meter compares budgeted minutes done against budgeted minutes expected, so finishing a 90-minute task in 50 still credits 90 and the verdict stays honest. Only the "hours done" figure overstates.

When a day runs short, the reclaimed time goes to the kata ladder rather than to finishing early — that's the weak point, and it's the one thing here a decisive fortnight will actually test. The ladder tops out at difficulty 4 on purpose, but if you're clearing those comfortably the next rungs are all-your-base and spiral-matrix (4), then forth and zebra-puzzle (5). forth is a stack-machine interpreter and the best reasoning exercise on the track at that level.

Phase 01 · six weeks · Aug 28 – Oct 8 · 70 hours

Data structures.
The highest-leverage phase.

Time to scaleTap a block to jump
0 hrs

Straight on from the sprint: still Python, still building things that run, no new mathematical machinery and no prerequisites you don't have. Six weeks at roughly twelve hours — a different pace from Phase 00 on purpose, because this one doesn't compress the same way.

One rule governs the whole phase. Build the structure from scratch before you solve a single problem with it.

The task lists below specify about 55 of the 70 hours. The rest is unallocated on purpose — your own implementations will have bugs, and debugging code you wrote is the learning rather than an interruption to it. If a week runs clean, spend the slack on drilling.

Why not MIT 6.006 as the spine

It was the original recommendation here and it was wrong for this point in the plan.

Right course, wrong moment

6.006 is an MIT sophomore course that lists discrete mathematics as a prerequisite, and lecture one opens with models of computation and proving solutions correct. Coming off CS50P you'd burn your energy fighting the framing rather than learning the structures — and the framing isn't what you're here for yet.

The Runestone book is built for exactly this gap. Its own preface says it assumes you may still be struggling with basics from a first course and are ready to go further anyway. It's Python, it's free, and the code runs in the browser, which suits how you learn better than a lecture hall recording does.

6.006 isn't discarded — it moves to week six, as a sharper second pass over material you've already built. Read that way it lands as tightening rather than teaching. And the proofs it does are the ones you'll be equipped for after Phase 02.

What changed, and what didn't

The argument above still stands: 6.006 is the wrong spine for this phase. What's been added since is a parallel lecture track, for weeks where leading with a lecture and using the book as reference suits you better. The spine is unchanged — Runestone, build first, drill second.

Read the table below before you rely on it. Two of the six weeks have no lecture behind them at all, and one has only half. A parallel track you assume is complete is worse than no track, because you find out in the week it fails you.

Which weeks have lectures

The optional lecture track is UC San Diego's Data Structures on Coursera — Python-friendly, free to audit, and paced for this point rather than for an MIT sophomore. It does not cover the whole phase. This is what it covers and what it leaves you.

WeekLecture coverageVerdict
Substitute, don't stack

Where a week has coverage, watch the lectures instead of reading the corresponding Runestone chapter, not in addition to it. This phase specifies 55 of its 70 hours and the remaining fifteen are for debugging your own implementations — which is the learning. Adding a lecture track on top of the reading is how a twelve-hour week quietly becomes eighteen.

Weeks 2 and 5 are the ones to plan around. Recursion and graphs are both weeks where you'd be back on the book regardless, so don't schedule them expecting a lecture to carry you.

The build list

Everything you write from nothing, and the few things you only read about. Each of these lands in one repo with tests, and by week six it's the artifact that proves the phase.

StructureWhat building it teachesVerdict

Done when

Exit criterion

Handed an unfamiliar problem, your first instinct is to ask what structure it wants — and you're usually right.

The concrete test: twenty problem statements you haven't seen, and for each one you name the structure and justify the choice in a sentence, without solving any of them. If you're above sixteen, you're done. Below twelve, you skipped the implementing.

Resource index

Problem Solving with Algorithms and Data Structures using Python

The spine. Free, interactive, code runs in the browser. Chapters 2 through 7 are the whole phase: analysis, basic structures, recursion, sorting and searching, trees, graphs.

runestone.academy · pythonds3
MIT 6.006 — Spring 2020

Week six only, as a second pass. Free lectures, notes, and problem sets, taught in Python. Come back to it properly after Phase 02.

ocw.mit.edu · 6.006 Spring 2020
UC San Diego — Data Structures

The optional lecture track. Free to audit, paced for this point rather than for a sophomore course. Covers weeks 1, 3 and 4; see the coverage table above for what it leaves out.

coursera.org · ucsd data structures
UC San Diego — Algorithms on Graphs

Only if you want week 5 on lectures. A separate course, so it's a second enrolment for two weeks of material — Runestone chapter 7 is the cheaper path.

coursera.org · algorithms on graphs
NeetCode roadmap

Problems organized into a deliberate sequence rather than a pile. Start it only after you've built the structure a problem uses.

neetcode.io/roadmap
CLRS

Reference, not reading. Look things up in it; don't work through it. 6.006 uses it as an optional companion for exactly this reason.

mitpress.mit.edu · CLRS
CPython source — listobject.c, dictobject.c

After you've built your own dynamic array and hash table, read how the real ones work. The comments are unusually good.

github.com/python/cpython · Objects

Reference and background

Moved off the top of the page. None of it is required before starting — it is here for when you want the reasoning behind a decision, or a rule you half-remember.

The rule, and why it's the rule

The standard failure mode is going straight to problem sites. You get fast at recognizing which structure a problem wants and never learn what the structure costs — so you can pick a hash table but can't tell me why it degrades, or why a poor key choice quietly turns your O(1) into O(n).

Writing your own is what makes the costs real. Every week here is implement first, drill second, and the drilling is much faster afterward because you're recognizing machinery you've already built.

How to actually run a drill session

Where the problems are. Every problem named in this phase is on LeetCode's free tier — search it by name, none of them are premium. NeetCode's practice list groups the same problems by topic, marks their difficulty, and has a free video walkthrough for most, which makes it the better front door. Use the roadmap for ordering and LeetCode for the judge.

Attempt in your own editor first, not the web one. Keep a drills/ directory next to structures/ in the same repo. That is not tidiness — it is so you can reach for the hash table you built rather than for dict. Solve it once with your own structure, then once with the built-in, and notice where yours is slower and why. That comparison is the entire reason this phase drills after building rather than instead of it.

Then paste into LeetCode to check. Their edge cases are the genuinely useful part — empty input, one element, duplicates, the enormous case that times out. That is what the site is for; the editor is not.

One timer for the session, not per problem. When it rings you stop, wherever you are. If you stall for twenty-five minutes on a medium, read the topic tag or the first hint — never the solution — and write down which stage you stalled at: understanding the problem, choosing the structure, or writing the code. After six weeks that log tells you what to fix, and it is more useful than the count of problems solved.

How the drills are laddered

Each week's drill names specific problems in three tiers — easy, then medium, then hard — and they are meant to be done in that order. The easy ones are not filler: they are where you confirm the structure you just built behaves the way you think it does, and they should take minutes. The hard one is usually not finishable in the time allotted, and attempting it anyway is the point. Stop when the clock runs out, wherever you've reached.

This is still drilling after building, not instead of it. The rule above doesn't change — if you haven't written the structure from scratch, the problems teach you pattern-matching and nothing else, which is the failure this phase is arranged to avoid. Roughly eleven of the phase's fifty-five specified hours are drill; the ladder is there so none of that time goes on deciding what to attempt.

Phase 02 · six weeks · Nov 20 – Dec 31 · 45 hours · +1 optional

Proof. The one
you're dreading.

Time to scaleTap a block to jump
0 hrs

So the whole phase is built around that. Week one contains no proofs at all. The first proofs you write are about data structures you built yourself in Phase 01. And every technique here has a fixed shape you can look up — proofs are far more formulaic than their reputation suggests.

Six weeks at about seven and a half hours. Slower than anything else on the plan, deliberately. A seventh week on automata and computability sits at the bottom as an optional extension — take it and Phase 03 starts a week later.

The proof shapes

The single most anxiety-reducing fact about proofs: each type has a fixed skeleton. You're not inventing an argument from nothing — you're picking a form and filling it in. Keep this table open for the first month.

TypeReach for it whenThe skeleton
How to use it

When you're stuck on a proof, the question is almost never "what's the clever idea." It's "which shape is this." Work down the table: can I go direct? Is the contrapositive easier? Is there a smallest counterexample to rule out? Is there a recursive structure to induct on?

Nine times in ten, choosing the right shape does most of the work, and the rest is bookkeeping.

Two rules for the whole phase

Write by hand

Not typed. Handwriting is slower, and the slowness is the mechanism — you can't autocomplete your way past a step you don't understand. This is also the one phase where the assistant does the most damage. Struggling with a proof is how the skill forms; watching someone else's finished proof is how you learn to recognize proofs without being able to write one.

Attempt, then check

Hammack develops proofs the way you'd actually think them through rather than presenting them finished, and there are fully written-out solutions in the back. That combination is the whole reason it's the right book here — but only if you write your attempt before you look. Reading a worked proof feels like learning and isn't.

Done when

Exit criterion

Given a recursive function, you can write a correctness proof by induction without a template in front of you.

The concrete test: take a recursive function you wrote in Phase 01 that you haven't proved anything about — the BST search, or the recursive flatten. State precisely what it returns, then prove it. Base case, inductive hypothesis, inductive step, no reference material. If you can do that in twenty minutes, Phase 03 will work.

Resource index

Discrete Mathematics: An Open Introduction, 4th ed.

The spine. Free, and the Runestone version has interactive exercises with instant feedback. The 4th edition reorganized to start with logic and proofs, then practise those proofs on graph theory — which is exactly the order you want.

runestone.academy · dmoi-4
Book of Proof — Richard Hammack

The proof-technique companion. Free PDF. Assumes very little, develops proofs as a thought process rather than a finished artifact, and has fully worked solutions in the back.

richardhammack.github.io/BookOfProof
Your own structures/ repo

Phase 01's output, and the source of nearly every proof you write in weeks 2 through 4. Proving things about code you wrote beats proving things about arbitrary objects.

Local
MIT 6.042J — Mathematics for Computer Science

Optional. Free lectures and a well-regarded textbook, considerably more rigorous. Dip into a lecture when you want a second explanation; don't adopt it as the spine. This is the one phase that deliberately has no parallel lecture track — watching finished proofs is how you learn to recognise proofs without being able to write one, which is the exact failure this phase exists to prevent.

ocw.mit.edu · 6.042J

Reference and background

Moved off the top of the page. None of it is required before starting — it is here for when you want the reasoning behind a decision, or a rule you half-remember.

Read this first

This isn't hard math in the sense that decayed on you. There's almost no computation in it. It's careful argument — stating exactly what you're claiming, then showing it holds in every case rather than the cases you happened to test. That's structurally much closer to building an appellate argument than to integration by parts, and you already do the hard version of that professionally. What's unfamiliar is the notation, not the reasoning.

Two things are true about the difficulty. It genuinely feels foreign at first — expect roughly two weeks. And almost nobody quits after that point. The risk window is narrow and it's at the very start, which is why the first fortnight here is deliberately gentle.

Two data points from Stanford

Their proof course, CS103, states plainly that there are no math prerequisites — high-school algebra is enough. What it does require is the programming course before it, and it leans on recursion from that course throughout. That's the same ordering you're running: structures and recursion first, proof second, and no calculus anywhere near it.

They also run an entire optional companion course, CS103A, purely for extra proof practice and problem-solving strategy, described as existing because math is a skill that takes practice to develop. A university with Stanford's admissions bar staffs a support course specifically for this transition. The wall you're anticipating is real, institutionally acknowledged, and routinely got over.

Phase 03 · nine weeks · Jan 1 – Mar 4 · 90 hours · trim pending

Algorithms.
The largest block,
and the one to protect.

Time to scaleTap a block to jump
0 hrs

Twice the size of anything else here. This is where you stop being someone who can code and start being someone who can say whether a plan is feasible before anyone builds it — and where the two phases before it finally pay off at once.

Nine weeks at about ten hours, including one deliberately fallow week over the holidays. One algorithmic idea per week, each closed out by a small implementation — the structure UC San Diego's Algorithmic Toolbox uses, and it works because a week's idea sticks better when it ends in something that runs.

The task lists specify roughly 77 of the 90 hours. The remaining thirteen are slack for the weeks that overrun — and in this phase that will be weeks 4 and 5, because dynamic programming always takes longer than the estimate says.

Which paradigm

The counterpart to Phase 02's proof shapes card, and the harder of the two. Most algorithm problems are not hard because the technique is hard — they're hard because you picked the wrong technique and spent an hour before noticing. Work down this table before writing anything.

ParadigmThe tellWhat you must verify
Close every week with something that runs

Each week's twenty-minute task is the minimum; the better version is a small implementation that uses the week's idea on data you care about. Karatsuba on big integers. Dijkstra on your own dependency graph. Edit distance on two versions of a file you wrote. It takes an hour and it's the difference between having read about an idea and having used one.

The order matters

Go down the list, not to your favourite. The single most common failure is reaching for dynamic programming when a greedy choice is provably safe, or reaching for greedy when it isn't — and the second one produces code that passes your tests and is wrong.

When you can't tell, write the brute-force recursion first. It's always correct, it makes the subproblem structure visible, and if the subproblems overlap you've just discovered you're in dynamic programming territory. That path is the whole design of weeks 3 through 5.

Done when

Exit criterion

You can look at a proposed system and give a defensible answer on whether it scales — before it's built.

The concrete test, in three parts. Given an unfamiliar problem: name the paradigm and justify the choice. Write the recurrence and solve it for a bound. And when the honest answer is that no efficient algorithm exists, recognise that and propose an approximation instead of searching for one that isn't there. The third part is the one that separates this from interview preparation.

Resource index

Algorithms — Jeff Erickson

The spine. Free, Creative Commons, grew out of years of lecture notes at Illinois. Chapters 0 through 8 and 12 are this phase; the flow chapters are the deliberate skip. Appendix II on solving recurrences is worth reading in week 1.

jeffe.cs.illinois.edu · algorithms
MIT 6.006 — Spring 2020

Co-spine, not a footnote. You met it as a second pass in Phase 01; here it paces the phase alongside Erickson — lectures lead, the book is the reference underneath. It lists discrete mathematics as a prerequisite, which is exactly why it belongs after Phase 02 rather than before it. Ninety hours across nine weeks is the one budget on the plan that absorbs a lecture course comfortably.

ocw.mit.edu · 6.006
Stanford Algorithms — programming assignments

Not the course; the assignments. Autograded implementations on large datasets, which is the one thing neither Erickson nor 6.006 gives you. Take them as each week's closing implementation and skip the sixteen-week shape.

coursera.org · algorithms specialization
NeetCode roadmap

Volume, especially for the dynamic programming section in weeks 4 and 5. Use it after Erickson's treatment, never instead of it.

neetcode.io/roadmap
CLRS

Reference only. Look things up; don't work through it. Useful when you want a second statement of a proof.

mitpress.mit.edu · CLRS

Reference and background

Moved off the top of the page. None of it is required before starting — it is here for when you want the reasoning behind a decision, or a rule you half-remember.

Why the reordering was worth it

Erickson's Algorithms — the spine for this phase — states its own prerequisites plainly: discrete mathematics including predicate logic, sets, functions, recursive definitions, trees and graphs as abstract objects; and proof techniques including direct, indirect, contradiction, exhaustive case analysis, and induction, especially strong and structural induction.

That is Phase 02's syllabus, almost line for line. You'll arrive holding exactly the tools this book assumes, which is the difference between reading it and fighting it. Its author also notes it isn't suitable as a first course in data structures and algorithms — which is why Phase 01 came first.

Phase 04 · six weeks · Oct 9 – Nov 19 · 55 hours · moved up

Systems.
Build the machine,
then debug the real one.

Time to scaleTap a block to jump
0 hrs

The phase that answers "why is it slow" and "why did it crash" — questions nothing at the language level will ever explain. Six weeks at about nine hours, and structurally the most enjoyable stretch on the plan.

Nand2Tetris is the spine and it's built for how you learn: you construct a working 16-bit computer from NAND gates upward, with automated tests at every layer.

The task lists specify about 45 of the 55 hours. The rest is slack, and in this phase it goes to weeks 2 and 3 — a chip that fails its test script can eat an evening, and that debugging is the learning rather than an interruption to it.

The abstraction stack

The organising idea of the phase, and the third of these tables after Phase 02's proof shapes and Phase 03's paradigms. Each layer exists to let you ignore the one below it. That works until it doesn't — and when something breaks, the question is which layer you're actually in.

LayerWhat it lets you ignoreWhat leaks when it breaks
How to use it

When something is slow or wrong, walk down rather than sideways. Most debugging failure is staying at the language level — rereading your code — when the symptom is actually a cache miss, a page fault, a linker mismatch, or a cgroup limit. The symptom tells you the layer if you know what each one sounds like.

That's the whole reason this phase exists, and it's why the two layers you already met in Phase 00 sit near the top of the table rather than at the bottom.

Done when

Exit criterion

You can profile something slow and form a real hypothesis about why, rather than guessing at the code.

The concrete test: take a program that's underperforming and, before changing anything, name the layer you think is responsible and say what evidence would confirm it. Then go get the evidence. Being right isn't the bar — having a falsifiable hypothesis instead of a hunch is.

Resource index

Nand2Tetris — projects 1 to 6

The spine. Build the gates, the ALU, the registers and RAM, the CPU, and the assembler. Automated tests at every step, and there's a browser IDE so there's nothing to install.

nand2tetris.org/course
Nand to Tetris Part I — Coursera

The same six projects with the authors' lectures attached, free to audit — you only lose graded submission and the certificate, and the projects self-test anyway. The cheapest lecture track on the plan: same spine, same order, nothing to reconcile.

coursera.org · build a computer
Nand2Tetris web IDE

The hardware simulator, in the browser. Load your HDL, run the supplied test script, get told immediately whether the chip is right.

nand2tetris.github.io/web-ide
Computer Systems: A Programmer's Perspective

Targeted chapters only — data representation, the memory hierarchy, linking, and concurrency. Reference for weeks 4 through 6, not a book to read cover to cover.

CSAPP, 3rd edition

Your own container and cluster work

Phase 00's output, and the thing this phase explains. Every week has something in it you can point at running.

Local

Reference and background

Moved off the top of the page. None of it is required before starting — it is here for when you want the reasoning behind a decision, or a rule you half-remember.

The most movable phase — and where it earns its slot

Nothing depends on this and it has no prerequisites, so it's the one to pull forward if the math phases start to grind. But it also compounds harder than anything else with the work you'll have been doing since August: you borrowed ten hours of it back in Phase 00 to make containers legible, and this is where the layer underneath that arrives.

The through-line is the abstraction stack at the bottom of this page. Every layer hides the one below it until something breaks, and then the layer you don't understand is the one you're stuck in. By March there shouldn't be one.

Phase 05 · four weeks · Mar 5 – Apr 1 · 30 hours

Linear algebra.
The language of
everything you work on.

Time to scaleTap a block to jump
0 hrs

The shortest substantial phase on the plan, and the one with the most immediate payoff for the work you'll have been doing since August. Embeddings, similarity, attention, retrieval — all of it is this, and none of it makes sense without it.

Four weeks at about seven and a half hours. No calculus needed, which is why it comes before the calculus refresher rather than after.

The translation table

The fourth of these reference cards, after proof shapes, paradigms, and the abstraction stack. Every row is one object, its picture, and where you've already met it without knowing its name.

ObjectThe pictureWhere you meet it
Why this framing

The exit criterion for this phase is reading the linear algebra in an ML paper as description rather than as noise. That's a translation skill: the notation is dense, but it's describing operations on shapes, and the shapes are what you're building intuition for.

When you hit an unfamiliar expression, ask what it does to the space rather than what it computes. That question is answerable from four weeks of work; the arithmetic question mostly isn't, and mostly doesn't matter.

Done when

Exit criterion

You can read the linear algebra in an ML paper as description rather than as noise.

The concrete test: open a paper on something you actually care about — retrieval, attention, embeddings — and read the equations. For each one, say what it does to the space in a sentence. You don't need to derive anything. If you can narrate the shapes, you're done.

Resource index

Essence of Linear Algebra — 3Blue1Brown

The spine for intuition. Fifteen short chapters, entirely geometric, and the single best explanation of the subject that exists in any medium. Watch it twice if needed; it's under four hours.

3blue1brown.com · linear algebra
NumPy

Where the arithmetic lives after week one. Build each operation by hand once, then use the library and never hand-compute a determinant again.

numpy.org · absolute beginners
MIT 18.06 — Gilbert Strang

Optional, and the classic. Lectures free on OCW. Dip in when you want a second explanation with more rigour; don't take it as the spine — its emphasis on hand computation isn't what you need.

ocw.mit.edu · 18.06
Mathematics for Machine Learning

Free book. Part one is linear algebra written specifically for where you're heading, which makes it a better second source than a general textbook.

mml-book.github.io

Reference and background

Moved off the top of the page. None of it is required before starting — it is here for when you want the reasoning behind a decision, or a rule you half-remember.

The one decision that makes this phase work

Learn it geometrically, then implement it. Do not learn it as arithmetic. Most linear algebra courses teach you to row-reduce matrices by hand, which is the one skill you will never use and the one that makes people believe they hate the subject.

Every concept here has a picture attached — a matrix is a transformation of space, a determinant is how much it stretches area, an eigenvector is a direction the transformation doesn't rotate. Get the picture, then write the code, then let NumPy do the arithmetic forever after.

Phase 06 · one week · Apr 2 – Apr 8 · ~10 hours

Calculus, only the
load-bearing parts.

Time to scaleTap a block to jump
0 hrs

You took Calc I and lost it, which is fine, because you need about four ideas from it and none of the mechanics. This is intuition repair, not a course — the smallest phase on the plan, placed one week before the only phase that uses it.

Three blocks: watch, drill, then code it. The last one is what makes it stick.

Which 3Blue1Brown chapters, and which to skip

Essence of Calculus is twelve chapters and roughly three hours. You need about half of it. The skips aren't laziness — they're the parts that exist to gate engineering majors rather than to serve you.

ChapterWhyVerdict

Done when

One artifact settles it.

Exit criterion

You can write gradient descent from scratch on a function of two variables — no library, no reference — and explain out loud what every term in it is doing and why the minus sign is there.

That single program uses all four things this phase exists to give you: derivative as rate of change, the chain rule, partial derivatives, and the gradient. If you can write it cold, you're done. If you can't, you know exactly which of the four is missing.

Resource index

Essence of Calculus

Twelve chapters, geometric intuition rather than mechanics. The whole watch block.

3blue1brown.com · essence of calculus
Khan Academy — Multivariable calculus

Where partial derivatives and the gradient live. Grant Sanderson wrote and narrated much of this series, so it's continuous with the videos above.

khanacademy.org · multivariable calculus
Khan Academy — Differential calculus

Chain rule drills only. Ignore the rest of the unit.

khanacademy.org · differential calculus
SymPy

Your answer key. Differentiate and integrate symbolically to check what you computed by hand or in code.

sympy.org

Reference and background

Moved off the top of the page. None of it is required before starting — it is here for when you want the reasoning behind a decision, or a rule you half-remember.

Why this moved to next-to-last

This was Phase 01 on the first draft, which was wrong. Nothing in data structures, proof, algorithms, systems, or linear algebra needs calculus — it's load-bearing only for probability and for reading the gradient in an ML paper.

Learning it first would have meant six months of decay before first use, on material that is pure intuition and therefore decays fastest. Here it sits one week ahead of Phase 07, which is the only thing that consumes it.

Phase 07 · five weeks · Apr 9 – May 13 · 35 hours · last of the fundamentals

Probability.
Learn it by
simulating it.

Time to scaleTap a block to jump
0 hrs

The last phase of the core, and the one that underwrites the most: machine learning, randomized algorithms, average-case analysis, cache behaviour, cryptography, and every honest claim anyone makes about whether a system works.

Five weeks at seven hours. Also the subject most improved by already having Python — for every concept, write the Monte Carlo version and watch it converge.

The distribution chooser

The last of these reference cards. Every distribution is a story about how something is generated — and picking the right one is almost entirely a matter of recognising which story you're in. Blitzstein's book builds a flowchart showing how they all relate through conditioning or through limits; this is the practical version of that.

DistributionThe story it tellsYou meet it when
How to use it

Read the middle column first and ask which one describes your situation. Almost everyone reaches for the normal distribution by reflex, and it's frequently the wrong answer — latency isn't normal, retry counts aren't normal, and assuming otherwise is how confident people produce badly wrong estimates.

When none of the stories fits, that's real information too: it means you should simulate rather than reach for a closed form. Which is the whole method of this phase anyway.

Done when

Exit criterion

You can quantify uncertainty in a system you built, and you reach for simulation before you reach for a closed form.

The concrete test: take a claim you'd want to make about your own work — this agent is better, this change reduced latency, this failure rate is acceptable — and state it with an honest interval around it. Say how many observations you'd need to believe it, and what would change your mind. If you can do that without looking anything up, the core is finished.

After this

The core ends here

Nine months, 383 hours, eight phases. What comes next is on the electives page: probe three in mid-May, then one concentration with real depth. Neuromatch's prerequisites are Python, linear algebra, probability, statistics and calculus — you'll have finished the last of those the week before their July cohort opens.

Worth doing on the last day: reread the plan page. Not for nostalgia — to notice which of the things that looked hardest in August turned out not to be, because that recalibration is what you'll use to scope the next thing you decide to learn.

Resource index

Introduction to Probability — Blitzstein & Hwang

The spine. Free online, second edition. Notable for story proofs — proving results by interpretation and by counting the same thing two ways, rather than by algebra. That technique is Phase 02 cashing in.

probabilitybook.net
Harvard Stat 110 — Blitzstein's lectures

The lecture track, and the best-matched one on the plan: the book's own author teaching the book, free on YouTube, chapter for chapter. One caveat — it's 34 hours of video against a 35-hour phase, so take half the lectures at most. Probability is a doing subject and the problem sets are where it lands.

stat110.hsites.harvard.edu · youtube
Harvard Stat 110 — video lectures

Thirty-four lectures, free, Blitzstein teaching the book. Watch selectively rather than all of it; the chooser table tells you which topics you actually need.

stat110.hsites.harvard.edu/youtube
Stat110x on edX

The interactive version — animations, embedded problem-solving, complementary to the lectures rather than a substitute. Free to sign up, and it suits how you learn better than passive video.

stat110.hsites.harvard.edu
Python and NumPy

Where every concept gets tested. One notebook per week, one simulation per idea. By May this is the most useful artefact the phase produces.

Local

Reference and background

Moved off the top of the page. None of it is required before starting — it is here for when you want the reasoning behind a decision, or a rule you half-remember.

The rule for this phase

Simulate before you derive. Every concept gets twenty lines of Python that generate the thing and count outcomes, run before you work through the algebra. You'll be nine months into a plan that started with Python; this is where that becomes a genuine mathematical advantage rather than just a skill you happen to have.

Bayes in particular clicks permanently the first time you simulate a counterintuitive result and watch the number arrive exactly where the maths promised. That experience is not available to someone learning this from a textbook alone, and it's most of the reason this phase sits at the end rather than the beginning.

Phase 08 · five weeks · May 14 – Jun 17 · 40 hours

System design.
The round that decides senior hires.

Time to scaleTap a block to jump
0 hrs

Added late, because the destination changed. Everything before this phase makes you someone who can build; this is the one that gets you hired to. It is also the round most experienced candidates fail, and the only major interview topic the rest of this plan does not touch at all.

Five weeks at eight hours. Four of content and one of pure performance — because system design is a skill you demonstrate live, not one you recall.

Done when

Exit criterion

Handed an unfamiliar system to design, you clarify the requirements before drawing anything, estimate before choosing, and can defend every component with what it costs rather than what it is called.

The concrete test: five designs run against a clock, out loud, with the retrospective written. If you are still rushing the requirements stage by the fifth, that is the drill — not more reading.

Resource index

Designing Data-Intensive Applications — Martin Kleppmann

The spine, and the reason this phase is forty hours rather than a hundred. Chapters 5, 6 and 9 are the core; it teaches the concepts rather than the interview.

dataintensive.net
Google SRE Book

Free online. SLIs, SLOs and error budgets in week four — the framing that turns "how reliable should this be?" from a guess into a budget.

sre.google · sre-book
The System Design Primer

Free, comprehensive, and the right shape for week five rather than week one. Use it as a checklist against your own designs, never as the syllabus.

github.com · system-design-primer
Mock interviews on video

Week one asks you to watch two end to end and note the sequencing rather than the content. This is the phase where watching genuinely helps, because the thing being taught is a performance.

hellointerview.com

Reference and background

Moved off the top of the page. None of it is required before starting — it is here for when you want the reasoning behind a decision, or a rule you half-remember.

Why this is not just interview prep

Most system design material is a question bank: memorise fifteen designs, recognise which one you have been handed. That works until an interviewer asks why, and it produces engineers who can name a pattern but not price it.

So the spine here is Kleppmann's Designing Data-Intensive Applications, which teaches the concepts underneath — replication, partitioning, consistency, the actual content of CAP — rather than the shapes on top. The question bank is week five, once you have something to reason with.

You arrive with more of this than you think

Timeouts, retries with backoff, circuit breakers and a token budget were Day 4 of Phase 00. Delivery semantics, idempotent consumers and backpressure were November's stack-gap weekend. Indexes, transactions and isolation levels were that weekend and Phase 01's SQLite work. Access control through a retrieval layer was the RAG bootcamp.

What you lack is not the ideas — it is their vocabulary, their failure analysis, and the reflex to price a choice rather than name it. That is a much shorter distance than starting cold, and it is why forty hours is enough here.

Electives · probes · concentration · Sep 2026 – 2027

Three interests.
One of them is
the one you want.

Time to scaleTap a block to jump
0 hrs

The core plan makes you competent. This decides what you're competent at. Three cheap probes spread across the core, then one concentration with real depth — plus the two habits and one weekend that cost almost nothing because they run on hours you're already spending.

The first block is the exception to "electives are optional." The August fortnight was the trial, and it produced an offer; only the report date is open. Either way the four months between are the only stretch of this plan where you never work with another person — that block fixes it for about an hour a week.

Nothing here competes with core hours. The failure mode for this plan was never difficulty, it was attrition.

The decision table

The last column is yours. Fill it in after each probe, in your own words, while it's fresh — the whole point of a probe is that it produces evidence, and evidence you don't write down turns back into a hunch within a fortnight.

InterestHow you described itWhat the probe testsVerdict

The entangled decision

Darden

The concentration question and the business school question are the same question in different clothes. If the honest end state is research-adjacent work connected to neuroscience, an MBA is a strange instrument for getting there. If it's leading AI organisations, it's a very good one.

That's not a call anyone else should make. But notice the sequencing: probe one lands in early October 2026, probe two in March 2027, and the concentration in the summer. Every one of those produces information the Darden decision needs, and all of them arrive before it has to be made.

The worst version is deciding by default — letting the deadline choose because the probes never happened.

Resource index

Neuromatch — open education resources

Free, complete, self-paced curricula in Computational Neuroscience and NeuroAI. Notebook-based. This is probe one and, quite possibly, the concentration.

neuromatch.io · open resources
Neuromatch Academy — July cohorts

The taught version: pods, TAs, projects, a global cohort. Runs each July, so July 2027 lands almost exactly where the core plan ends.

neuromatch.io/courses
Neuromatch prerequisites

Python, linear algebra, probability, basic statistics, and calculus including derivatives and ODEs. Read this list against Phases 05, 06, and 07 — the overlap is close to exact.

compneuro.neuromatch.io · prereqs
Your own agent and operator

Every probe extends what you already built rather than starting fresh. Green-field probes don't get finished; extensions do.

Local

Reference and background

Moved off the top of the page. None of it is required before starting — it is here for when you want the reasoning behind a decision, or a rule you half-remember.

The framing

You described the three differently, and the difference is the useful signal. AI is a bet about where the world is going. Data science and economics is justified by what's already on your CV. Neuroscience is the only one you described in terms of wanting.

And "everything will be AI-adjacent soon" is an argument against AI as a concentration. If it becomes the substrate, it stops being the differentiator — and Phases 00 through 07 are its foundation regardless. The concentration is what you bring to it.

One caveat, added later. That argument originally rested on your already getting forty hours a week of AI at work. The premise now depends on how the August fortnight goes — the role is decided there, and January is only when it would start. If January lands, the argument stands unchanged. If it doesn't, you aren't getting those forty hours from anywhere, and AI as a concentration becomes a more serious candidate than this page currently allows. Worth rereading in January rather than assuming the conclusion survived.