Berkeley CS 189: Introduction to Machine Learning
CS 189 is Berkeley's rigorous machine learning course: linear and logistic regression, SVMs, kernels, neural networks, decision trees, clustering, and dimensionality reduction, treated mathematically rather than as a library tour. It's the gateway to ML research and the course where MATH 54's linear algebra gets cashed in.
Fennie is independent and not affiliated with UC Berkeley. This is an unofficial study guide.
Build my CS 189 study planWhat makes it hard
189 is math-forward — homeworks mix lengthy derivations with coding, and exam questions expect you to manipulate gradients, matrix expressions, and probability fluently. The course's difficulty is mostly imported: students with rusty linear algebra or probability spend the semester paying down that debt at the worst time.
What you'll cover
- • Linear and logistic regression
- • Support vector machines and kernels
- • Neural networks and backpropagation
- • Decision trees and ensemble methods
- • Clustering and EM
- • PCA and dimensionality reduction
- • Bias-variance tradeoff and regularization
The CS 189 study guide
How to study for Berkeley CS 189, step by step.
- 1
Audit your linear algebra and probability before enrolling
189's difficulty is mostly prerequisite debt. If eigendecompositions, matrix calculus basics, and conditional expectations aren't comfortable, spend the weeks before the semester rebuilding them — it changes the entire course.
- 2
Re-derive the main results yourself
For each model — least squares, logistic regression, SVMs — close the notes and reproduce the derivation. Exam questions are derivation variations, and reproducing beats recognizing.
- 3
Start homeworks the week they release
189 problem sets are long, mixing proofs with coding experiments, and they routinely take longer than planned. The coding halves hide debugging time that deadline-week starts can't absorb.
- 4
Build a one-page map of every model
For each method, record its loss function, assumptions, and failure modes side by side. Exams love compare-and-contrast questions, and the map turns them into lookups.
- 5
Drill past exams for mathematical fluency
Past 189 exams reveal the expected speed of matrix and gradient manipulation. Work them timed and treat every slow derivation as a flag for targeted review.
- 6
Pace the math debt with Fennie
Upload the CS 189 syllabus and Fennie's Daily Plans schedule prerequisite review alongside new material so the linear algebra arrives before the lecture that needs it, with derivation practice and model-comparison flashcards generated from your actual course materials. Free to start.
Start my CS 189 plan free
How Fennie helps with CS 189
Fennie's Daily Plans schedule CS 189 with prerequisite review built in, so the linear algebra and probability arrive before the lectures that assume them. Chat through derivations step by step until you can reproduce them cold, and drill generated flashcards comparing models — loss functions, assumptions, failure modes — the exams' favorite angle.
FAQ
Is CS 189 hard?
It's one of the most mathematically demanding undergraduate CS courses at Berkeley. The ML concepts themselves are standard; the challenge is fluent linear algebra, probability, and calculus under exam pressure. Strong MATH 54 and CS 70 foundations change the experience completely.
What math do I need for CS 189?
Solid linear algebra (eigendecompositions, projections, matrix manipulation), multivariable calculus (gradients), and probability (conditional expectation, Gaussians). If any of the three is shaky, review it before the semester rather than during.
Is CS 189 worth taking for industry ML jobs?
It's the strongest ML fundamentals signal in Berkeley's undergraduate catalog — the derivation-level understanding it builds is exactly what ML interviews and applied research roles probe. Pair it with project experience for the full picture.
Pass CS 189 with a plan, not a cram
Upload your CS 189 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 Berkeley courses
CS 61A — The Structure and Interpretation of Computer Programs
CS 61A is Berkeley's legendary intro CS course, taught primarily in Python with excursions into Scheme and SQL. It emphasizes abstraction — higher-order functions, recursion, object-oriented programming, and interpreters — and it's the first course in the CS 61 series that every CS and Data Science student takes.
CS 61B — Data Structures
CS 61B is Berkeley's data structures course, taught in Java, covering lists, trees, hashing, graphs, sorting, and asymptotic analysis. It's the second course in the 61 series and the one most cited in industry-interview prep — its projects, including the famous build-your-own-world and Gitlet (build a mini Git), are substantial software engineering exercises.
CS 70 — Discrete Mathematics and Probability Theory
CS 70 is Berkeley's discrete math and probability course, required for the CS major, covering proofs, graph theory, modular arithmetic, RSA, polynomials, counting, and a substantial probability unit. It's the theory gateway — and by reputation, the hardest lower-division course in the major.
CS 61C — Great Ideas of Computer Architecture (Machine Structures)
CS 61C completes Berkeley's 61 series, going below the abstraction line: C programming, RISC-V assembly, CPU datapaths and pipelining, caches, virtual memory, and parallelism. It's required for the CS and EECS majors and is the course where software students finally see what the hardware is doing.