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 https://piazza.com/class/jtf38dexg76x5.
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:
Note that no electronics is permitted at lecture except by explicit permission from the instructor.
- 1: Introduction, Linear Classifiers, Perceptron Learning, and the support vector classifier
- 2: Machine learning abstractions, Decision theory, and Gaussian discriminant analysis
- 3: Eigenvectors, Quadratic Forms, Normal distributions, Regression, Newton's method and logistic regression
- 4: Statistical justifications for regression, Ridge regression
All materials can be found on the front page.
There is no textbook for this class, and we do not plan on posting lecture slides. Instead, see Shewchuk's lecture notes and "A Comprehensive Guide to Machine Learning" on our Resources page, which cover a large portion of the material covered in lecture. We will follow Shewchuk's lecture notes closely. Notes are not a substitute for going to lecture, as additional material may be covered in lecture.
There are two textbooks that cover the material in the class that are good to use as supplementary material:
Release Schedule: Discussion worksheets for the Tuesday discussions are released the day before at 10 p.m. Discussion solutions may be published Tuesday evening. We will do our best but cannot guarantee discussion solutions.
The discussion sections may cover new material and will give you additional practice solving problems.
There are seven homeworks. Homework 1 is due on Monday July 1st at 11:59pm. We recommend that you submit what you have early, at say 10pm, and then resubmit at 11:59pm to avoid being late. Homework 2 is due Monday July 8th at 11:59pm.
The other five homeworks will be released at the beginning of each week and due one week from when they are released.
You have 3 slip days that you may use for homeworks at your discretion throughout the course. For example, you could without penalty submit one homework 3 days late, 3 homeworks 1 day late, or anything in between.
After you’ve run out of slip days, late homeworks receive zeros.
- Slip days are intended for sickness, technical difficulties you may have submitting homeworks, or any other factor that would prevent your regular timely completion of homeworks.
- Do not ask for an extension if you are sick, that’s the point of slip days (although in extreme circumstances, we will consider making special exceptions given documentation).
- We strongly recommend you use slip days for their intended purpose, and not for procrastination. We will not give any student any extra slip days out of fairness.
Discussion of homework problems is encouraged, however all homework, including programming assignments, must be written individually. At the top of your homework list all the students with whom you collaborated. We will actively check your code for plagiarism.
We have a zero-tolerance policy for cheating. Typical violations result not in a 0, but in a large negative score that counts against future assignments. However we reserve the right to give an instant F in the course for even a single violation, and will always give an F for two violations.
You are encouraged to work on homework problems in study groups of two to four 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.
- Homework: 40%
- Midterm: 20%
- Final: 40%
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.
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 ...