CS 189 at UC Berkeley




We will use Piazza as the 'one-stop shop' throughout the semester: for a Q&A forum and for official announcements. Enrollment in Piazza is mandatory. If you have questions about anything related to the course, please post them on Piazza rather than emailing the instructor or TAs. Please do not post anything resembling a solution to a homework problem before it's due. If in doubt, you should make your post private (visible to instructors only). We always welcome any feedback on what we could be doing better. See the Piazza Etiquette section for more on using Piazza. To join the class on Piazza, follow this link piazza.com/berkeley/fall2020/eecs189289a. Using a name other than your actual name on Piazza is strictly prohibited. Anyone who does so will be banned from the class Piazza.


All homework will be submitted through Gradescope, and all homework and exam grades will be given back through Gradescope. To join the class on Gradescope, go to gradescope.com and enter this code: MYWKDW

Instructional Servers

CS189 does not make use of instructional accounts, but to get a computer account for this course, go to http://inst.eecs.berkeley.edu/webacct, or click 'WebAcct' on http://inst.eecs.berkeley.edu.


Midterm is Tuesday, October 13 from 7-9 p.m. Final is Thursday, December 17, 3:00 - 6:00 p.m. Exams are proctored via Zoom using a procedure that will be detailed in HW 1. Don't worry, you will have opportunities to get the proctoring setup working before the actual exams happen. No alternate exams will be offered. Please contact course staff at cs189-fa20 (at) berkeley (dot) edu if you have an extreme hardship that would interfere with this.


  • 0: Welcome and Introduction
  • 1: Foundations: Regression, Classification, and Learning & Features and Regularization
  • 2: Foundations: Validation and Generalization
  • 3: Foundations: The probability perspective & Core tradeoffs
  • 4: Foundations: Kernel perspective & The nearest-neighbor perspective
  • 5: Foundations: Core tradeoffs revisited --- a unified view of under- and over-parameterized learning & Eigenspace perspectives
  • 6: Foundations: Dimensionality reduction and latent spaces & Feature selection and the role of sparsity
  • 7: Gradient descent and its role & Beyond linear models: neural networks
  • 8: Stochastic gradient descent & Natural losses for classification
  • 9: Generative approaches to classification & Clustering: basics
  • 10: Clustering: Mixture models & Margin in classification
  • 11: Support vector machines
  • 12: Decision Trees & Ensembles and Boosting
  • 13: Deep neural networks
  • 14: Deep neural networks (continued)


All materials can be found on the front page.


There is no textbook for this class. Instead, there is a set of fairly comprehensive lecture notes. Given how rapidly the field of machine learning has evolved, these notes are already slightly out-of-date as we will try to present to you in lecture our best perspective on the field. However, we encourage you to revisit the notes after lecture and discuss on Piazza. Each note may be covered in one or more lectures. Notes are definitely not a substitute for going to lecture, as additional material will defiitely be covered in lecture. As we said, the notes are from a previous iteration of the course and may not be comprehensive. Use Piazza to discuss topics that are covered in lecture but not in the notes. Instructors will try to engage if they have the time.


Release Schedule: Discussion worksheets for the Friday discussions are released the day before. Discussion solutions will be published Friday evening. Our priority is homework content, so discussion solutions may be delayed.

The discussion sections may cover new material and will give you additional practice solving problems. You should attend the discussion that you will be assigned to with your study group, and details about this will be made available on the course Piazza.


Release Schedule: Every Monday at 11:59 p.m. (with some exceptions at the beginning of the semester), homework for the coming week is released. Homework is then due on Gradescope the following Tuesday at midnight; the solutions for that homework will be released 2 hours after the deadline. You are expected to self-grade your homework and submit your self-grades by the following Friday --- i.e. you should finish reading the solutions and evaluating your answers on Wed, Thu, and Friday.

Doing the homeworks and reading the solutions is vital for your learning. You are expected to show your work and justify all of your answers. Your lowest two homework scores will be dropped and homework scores are rescaled such that 60% is full credit (so a homework score of 30% is rescaled to 50%. Maximum score is 100%.), but these two drops should be reserved for emergencies. If you use your drops early on in the semester and request another, we cannot help you.

Self Grading

To complete self-grades, look for the self-grade form in that week's solutions file. After filling out the form, click 'download JSON' and submit that JSON to Gradescope. When filling out self-grade form, use the following guidelines:

  • 0 = Didn't attempt or very very wrong,
  • 2 = Got started and made some progress, but went off in the wrong direction or with no clear direction,
  • 5 = Right direction and got half-way there,
  • 8 = Mostly right but a minor thing missing or wrong,
  • 10 = 100% correct.

At the end of the semester, all self-grades are re-calibrated. Note that everyone in the class will introduce noise when self-grading, and we'll have this distribution;we don't expect perfect self-grades. if you are not deliberately mis-grading, then you will be fine.


Ethical behavior is an important part of being an engineer. It is a part of our responsibility to act ethically and honestly, and moreover, ethical behavior is what helps you learn best. Cheating is fundamentally dishonest and antisocial behavior. We have a zero-tolerance policy for cheating, especially in light of our very generous policies regarding the homework and its grading. Any unconfessed offence will result in negative points for the category that the offense occurs in, with no bound on how negative it can go. We don't have the resources to waste on trying to fine-tune leniency for cheating --- you will likely fail and will definitely get a referral to the Center for Student Conduct. If you confess first --- realizing your mistake and wanting to make up for it without us specifically reaching out to you, we will view this as a sign of your ethical conduct and will exact a less strict consequence.

Please note that online communication mediums outside of Piazza should not be used to discuss assignment content. You are not permitted to upload any of our problems, solutions, or your own solutions to our problems to any site that is accessible by other people. In general, use Piazza to discuss content. The only limited exceptions to this are online communication mediums between you and the collaborating individuals explicitly listed on your homework assignment. Looking at online solutions from previous semesters or other students is forbidden, as is sharing of your solutions with others. Furthermore, students all have an affirmative duty to report possible cases of cheating or unauthorized communication to the course staff, immediately. Acknowledgement of and failure to report cheating implicates the bystander since this is academic misconduct. Cheating hurts us all and engineering ethics requires us to point out wrongdoing when we are aware of it.

Submit cheating incident reports via this form.


You are encouraged to work on homework problems in study groups of three to five people (collaboration at course events is an exception to this limitation); however, you must always write up the solutions on your own. You are not permitted to look at the final written solution even for members of your own study group. Similarly, you may use books or online resources (not solutions from previous terms, etc.) to help solve homework problems, but you must always credit all such sources in your writeup and you must never copy material verbatim. We believe that most students can distinguish between helping other students and cheating. Explaining the meaning of a question, discussing a way of approaching a solution, or collaboratively exploring how to solve a problem within your group is an interaction that we strongly encourage. But you should write your homework solution strictly by yourself so that your hands and eyes can help you internalize this material. You must explicitly acknowledge everyone whom you have worked with or who has given you any significant ideas about the homework. Not only is this good scholarly conduct, it also protects you from accusations of being a jerk or free-rider regarding your colleagues' ideas.

Warning: Your attention is drawn to the Department's Policy on Academic Dishonesty. In particular, you should be aware that copying or sharing solutions, in whole or in part, from other students in the class or any other source without acknowledgment constitutes cheating. Any student found to be cheating risks automatically failing the class and being referred to the Office of Student Conduct.

However, we are very fair. No student will be accused of cheating without a human being looking over their case. And nobody will be sent to Student Conduct without at least the head TA and professor concurring that this is warranted and makes sense. Algorithms help us focus our attention, but decisions are made by compassionate human beings.


Details coming soon! Both graduate and undergraduate students will have the opportunity to work on a project for the class this semester.


No project option:

  • Homework: 10%
  • Participation: 5%
  • Midterm: 40%
  • Final: 45%

Project option:

  • Homework: 10%
  • Participation: 5%
  • Project: 20%
  • Midterm: 30%
  • Final: 35%

If you are in 189 and do the project, we calculate your grade using both of the above schemes, and the higher of the two results will be used for your final grade. 289A students must do the project.

CS 189/289A will not be curved in Fall 2020. The bins that will determine your grade are listed below:

  • A: 90%
  • A-: 87%
  • B+: 80%
  • B: 69%
  • B-: 60%
  • C+: 55%
  • C: 50%
  • C-: 47%
  • D+: 46%
  • D: 44%
  • D-: 40%

Piazza Etiquette

Important Note:

We will encourage more student participation on Piazza rather than answering right away, that is, we will wait until other students step up and answer questions.

Of course, we will still provide clarifications on logistics, typos, subtle points, etc.

We want to make sure that you are helping each other out, and having instructors give away the answers isn't the most beneficial for your education either.

In order to make Piazza a better resource for everyone, we've outlined some guidelines for you to follow when posting your questions. Questions which follow these guidelines will have a higher chance of being answered!

1. Ask HW questions only in the designated HW posts.

We've created individual posts for each problem from homework. Please ask questions, discuss problems, or help out in those posts only. Before asking a question, read through (or search) the whole thread to see if your question has been answered.

2. Don't post answers in Piazza.

Please don't give away the answer on Piazza. You can explain things in a way that still lets other students figure out the essence of the problem on their own, but don't spoil the problem. For example, don't point to a useful YouTube link that works out essentially what the problem is asking about.

That is not cool.

Post such spoilers after the HW is due. That is totally fine. If you are not sure, post privately to instructors and then we'll let you know.

3. Try to make posts public.

While not violating Rule 2, try to make your questions public, because others might have the same question and we don't need to answer them multiple times.

4. Piazza is not Office Hours. 5 minute-test.

If you think your questions may take more than 5 minutes to answer, please come to office hours or homework parties instead.

5. Neither Piazza nor TAs are for pre-grading.

Please do not post questions of the form:

  • "Is this the correct solution to HW X problem Y?"
  • "Would this receive full credit on HW X problem Y?"
  • "Is this the right level of detail for hw X problem Y?"

Please do not use Piazza as a medium to ask instructors to check your homework in advance. We simply cannot check every student's homework through Piazza.

Feel free to ask questions of clarification, or ask questions about the course content to achieve a deeper understanding, but at a certain point, you must apply your knowledge, give it your best shot, and submit your answers with confidence.

6. Post a screen shot of any resource referenced.

Your question should be self-contained. The TAs (and other responders) should not have to scan through PDFs to even figure out what the question is. Ask yourself: am I referring to some lecture /HW solution/discussion solution/past exam?

If the answer is yes, post a screen shot of the relevant part. This can include your handwritten notes from the relevant lecture.

7. Post all your work.

Don't post one line saying:

At step n, I get XYZ, and I'm now confused.

This forces the TAs to guess:

What happened in steps 1, 2, ..., n - 1?

Most likely, the TAs will guess wrong, and we run into a mess of followup questions trying to figure out what steps 1, 2, ..., n - 1 were.

Instead, post:

Starting out, we have: ....

Then, I do ..., and I get ...

Next, I do ..., and I get ...

Next, I do ..., and I get ...

Now, I get $&%&#(, and this makes no sense.

Then, the TA can respond:

The mistake is at step 3, you're not allowed to apply ABC to XYZ because ...