CS 189 Discussion Notes
Introduction
Welcome to CS 189! One of the most popular upper-division CS classes at UC Berkeley!
This chapter offers supplementary resources to accompany Wesley’s discussions presented during the Spring 2026 iteration of the UC Berkeley course CS 189: Introduction to Machien Learning.
Learning Topics
As mentioned in the course catalog:
Theoretical foundations, algorithms, methodologies, and applications for machine learning. Topics may include supervised methods for regression and classification (linear models, trees, neural networks, ensemble methods, instance-based methods); generative and discriminative probabilistic models; Bayesian parametric learning; density estimation and clustering; Bayesian networks; time series models; dimensionality reduction; programming projects covering a variety of real-world applications.
Note that, unlike other typical courses (especially ones I have taught before), CS 189 has had multiple versions over the years. For personal convenience, I have summarized them into three major categories:
- The Shewchuk version (this is also the version I have personally taken as a student). Usually offered in each spring semester in the past.
- The Listgarden version (note this is different from the current semester’s version). Usually offered each fall in the past.
- The Data 100 version. Became the sole version of CS 189 offered each semester since Fall 2025.
Differences include: - Shewchuk version is older, less mathy, involves a lot of Kaggle assignments (and as a result, coding assignments), fewer math assignments, and is usually taught by Jonathan Shewchuk. - Listgarden version is relatively more modern, is more mathy, has some coding assignments, and is usually taught by Jennifer Listgarden co-teaching with another professor. - Data 100 version is very modern, much less mathy, and has some coding assignments and math assignments as well, much friendlier to those who struggle in probability theory and linear algebra, and is similar to Data 100 and taught by Data 100 professors, so I like to call it the Data 100 version.
The current semester, Spring 2026, is teaching the Data 100 version.
This means the following list of learning topics might differ, but should approximately reflect the list:
More specifically, you will be learning topics including, but not limited to, the following:
- Linear Regression
- Logistic Regression
- Gradient Descent
- Neural Networks
- CNNs
- Transformers
- Diffusion Models
Important Websites
You might want to bookmark the following websites:
- Course Website
- My Personal Website (where slide decks are located)
- My Discussion Notes Website
General Tips
If you are wondering about my tips for succeeding in the course:
For the Midterm and Final:
Start reviewing early and avoid cramming. Consistent, spaced practice is much more effective than last-minute studying. Here are some strategies to help you prepare:
- Practice with past exams: Simulate exam conditions by timing yourself and working without notes. Focus on the most recent regular-semester exams first (Fa25, since there has been a revamp in the course since then, so earlier iterations of the course might not have the same content as the current one anymore), then move on to older ones if you have time. After finishing, review your mistakes and make sure you understand why you got them wrong.
- Active recall and self-testing: Instead of just reading solutions, try to solve problems from discussion worksheets and exam preparation worksheets on your own. Write out your reasoning and check your answers afterward. Knowing how to solve a question right after reading the solution is different from knowing how to solve a similar question without looking at the solution!
- Review concepts, not just procedures: If you get stuck, revisit lecture videos or slides to clarify underlying concepts. Understanding the ‘why’ behind each method will help you tackle unfamiliar questions.
- Join study groups or attend review sessions: Explaining concepts to others and hearing different perspectives can deepen your understanding and reveal gaps in your knowledge.
- Draft the cheat sheets: Looking through formulas, definitions, and key concepts helps reinforce your memory and gives you a resource to use during the exam.
Remember, there is only so much we can test you on, so don’t stress too much. A bad score does not mean that you cannot do well in the class. Focus on understanding the core concepts and practicing problem-solving, rather than memorizing details. Consistent, active review will help you build confidence and perform your best on exam day.
For Homeworks:
Try to solve each question independently before seeking help, as this will strengthen your problem-solving skills. If you get stuck, review related lecture materials or discuss the problem with classmates.
If you encounter a question you don’t know how to solve, start by reviewing the relevant lecture slides for a quick refresher. The textbook is also a valuable resource, as lecture slides are often based on its content and can provide additional explanations and examples. Don’t hesitate to attend office hours—TAs and tutors are there to help you succeed and can offer guidance on difficult topics or assignments.
Consistent engagement with these resources and assignments will help you stay on track and deepen your understanding of the material.
Future Course Suggestions
I have personally taken a variety of upper-division CS and DS courses, so if you are looking for future course suggestions, here are my recommendations: