Stanford CS 229: Machine Learning
CS 229 is Stanford's graduate-level machine learning course — generalized linear models, SVMs and kernels, deep learning foundations, unsupervised learning, and learning theory — made world-famous by Andrew Ng's recorded lectures. It's simultaneously a campus rite of passage and one of the most self-studied courses on the internet.
Fennie is independent and not affiliated with Stanford University. This is an unofficial study guide.
Build my CS 229 study planWhat makes it hard
It's a math course wearing an ML costume: problem sets are dominated by derivations in linear algebra, multivariable calculus, and probability, and students expecting an applied modeling class get flattened by pset one. Self-learners hit the same wall in a different form — the lectures watch easily, but the understanding lives in doing the problem sets, which most online attempts skip.
What you'll cover
- • Linear and logistic regression, GLMs
- • Support vector machines and kernels
- • Deep learning foundations
- • Generalization and regularization
- • Unsupervised learning: k-means, EM, PCA
- • Learning theory basics
The CS 229 study guide
How to study for Stanford CS 229, step by step.
- 1
Audit the math prerequisites honestly
Matrix calculus, eigenvectors, multivariate Gaussians, and probability manipulation are used without slowing down. Spend the first two weeks patching whichever of these is rusty — pset one will audit them for you otherwise.
- 2
Re-derive lecture results by hand
Following a derivation in lecture and producing it cold are different abilities, and the psets test the second. After each lecture, close the notes and re-derive the key results.
- 3
Do the problem sets, especially if self-studying
The lectures are famous but the understanding lives in the psets. Watching without deriving produces ML vocabulary, not ML ability — schedule the problem work like it's the course, because it is.
- 4
Build a model-assumptions map
For every algorithm, record what it assumes, when it breaks, and its relationship to the others (logistic regression as a GLM, SVMs through the kernel lens). Exam questions live in those connections.
- 5
Implement the core algorithms once each
A from-scratch gradient descent, logistic regression, and k-means cement what the equations mean. Keep implementations small — the goal is understanding, not a framework.
- 6
Hold the derivation schedule with Fennie
Upload the CS 229 syllabus — or the public materials if you're self-studying — and Fennie's Daily Plan paces derivation practice and pset work to the deadlines, with quizzes built from the actual course notes. Free to start.
Start my CS 229 plan free
How Fennie helps with CS 229
Fennie's Daily Plans pace CS 229's real workload — the derivations — across the quarter, and give self-learners following the famous lectures the deadline structure that decides whether online attempts finish. Chat through a stuck derivation step by step, and generate practice questions from the actual course notes rather than generic ML trivia.
FAQ
Is CS 229 hard?
Yes — it's a graduate course where problem sets are mostly mathematical derivation, not model-fitting. Students with solid linear algebra and probability who re-derive lecture results consistently manage it; students expecting an applied class get recalibrated by pset one.
Can I self-study CS 229 online?
The lectures and notes are public and famously good. The honest answer: watching them is the easy 30% — the understanding lives in the problem sets, and self-learners who schedule pset work like coursework get the real value while lecture-only watchers get vocabulary.
What's the difference between CS 229 and Andrew Ng's Coursera course?
The Coursera/DeepLearning.AI courses are applied and gentler, built for practitioners. CS 229 is the theory-first Stanford course: derivations, proofs, and the mathematical foundations underneath the same algorithms. Many people do both, in that order.
Pass CS 229 with a plan, not a cram
Upload your CS 229 materials and Fennie generates a Daily Plan paced to your deadline — plus chat, flashcards, and quizzes built from the actual course content.
Get started freeMore Stanford courses
CS 106A — Programming Methodology
CS 106A is Stanford's famous introduction to programming, taught in Python — control flow, functions, decomposition, lists, dictionaries, and graphics — assuming zero prior experience. Its lectures and assignments are public, and through Code in Place it has been taught free to hundreds of thousands of people, so it's studied worldwide by enrolled students and self-learners alike.
CS 106B — Programming Abstractions
CS 106B follows 106A with programming abstractions in C++ — recursion, ADTs and the standard collections, big-O, linked structures, trees, and hashing. It's the course where Stanford CS gets real, and like 106A its materials are public and heavily used by self-learners.
CS 107 — Computer Organization and Systems
CS 107 takes students from C++ down to the machine: C programming, pointers and memory, bit-level representation, x86-64 assembly, and how the heap actually works — culminating in the famous heap allocator assignment. It's the systems gateway of the Stanford CS core.
CS 103 — Mathematical Foundations of Computing
CS 103 is Stanford's discrete math and theory gateway — proof techniques, set theory, induction, graph basics, then finite automata, regular languages, and the first look at computability and P vs NP. For most students it's the first course where the deliverable is a proof, not a program.