This semester I took CS188 (Artificial Intelligence), CS189 (Machine Learning), EECS126 (Probability and Random Processes), and HIST182C (Human Contexts and Ethics of Data). I took these classes together because they all had some overlap and I thought it would be cool to see how they relate to each other. It was a very challenging semester but somehow I came out okay. :)
CS188 was taught by Pieter Abeel and Dan Klein, both of who were very awesome lecturers. It was cool to see Abeel show up to lectures always wearing shirts from his various companies and projects, such as Covariant.ai, Gradescope, and BAIR. I also really enjoyed the lecture slides as they had really cute animated robots. Anyways, CS188 is a well run course as in there aren’t really issues with autograders or homeworks, and the projects don’t really have any bugs which I appreciate (a lot like cs61a). In terms of course content, it gave me a high level overview of many concepts in AI such as Markov Decision Processes, Bayes Nets, Reinforcement Learning, and we also went into some machine learning stuff at the end. It isn’t a very mathematical proof based course such as EE126/127/CS189, but it was a light course on showing us a lot of concepts and their applications in AI.
The projects were also comparatively light and straightforward, as in we just had to implement the concepts we learned in class and they had pretty cool effects since they were all based around winning the game of PacMan. This semester we also had written homework (in addition to online homework) and self grades which was not like in previous iterations of this class, but it was not too much more work. Overall, it was a very decent class, but I wished it went into more depth into the subjects. One of the interesting obstacles this semester was that the second midterm was cancelled due to the fires and smoke. I pulled an all nighter studying for the midterm that was the next day at 7:30pm and then by 3:30pm the next day, I felt like I was prepared. At 5pm, the exam was cancelled. Darn.
CS189 was a real adventure this semester. It was taught by Ben Recht, Stella Yu, and Moritz Hardt and is generally regarded as the hardest undergraduate course. CS189 is taught different by each professor in previous years, so it’s not like other classes where you know exactly what to expect. However, it brought back a lot of the same vibes from EE127, so I was very glad I took that class. It is a very theoretical and math heavy course with also coding assignments to see the applications and implement the models we saw in class. I wasn’t a huge fan of the course staff, as they didn’t respond on piazza to clarification posts, there were many errors on every homework, and they had a “No Questions” policy during the exam (so even if there were errors on the exam, we couldn’t ask about it). We got back snarky remarks on our homework when our proofs were not graduate level proofs(e.g. “ you need to be wayyyyyyy more precise”) and they were just generally unhelpful. The strange thing I thought was that for that particular response, I had the same question in EE127 (which is also cross listed as a graduate course), and when I wrote the same answer, I got full credit.
Anyways, through a lot of self learning and talking and discussing ideas with other students, we ended up learning a lot. The class really felt like EE127 mixed with a little bit of EE126. An interesting part of the class was when Hardt taught on discrimination and fairness in machine learning, which I was very glad we talked about because how and when we use these algorithms is almost as important as figuring out how they work. This class is probably the peak of theory classes at the undergraduate level and the difficulty definitely reflected that, but I am glad I took it.
EE126 was my favorite class this semester, taught by Ramchandran and Parekh. The first third of the class was CS70 on steroids, and then we went into a lot of new probability concepts such as Kalman Filters, Poisson Processes, MLE/MAP, etc. This is also one of the more notoriously difficult class, as we had quite extensive problem sets and labs as well. But the class is totally worth the effort. Ramchandran and Parekh were both great lecturers and the homeworks and exams were all interesting problems and not just hard busy work. We covered so much material in a lot of depth that when I was studying for the final, I realized how many topics we covered.
I usually write only about my technical courses, but I have to mention HIST182C because it covered the ethics in data science in today’s world. We talked about security issues in today’s datafied world as well as the ethics data science and machine learning. If there was one takeaway from the class, it was that as an engineer, it is your responsibility to think about the ethics of your work. It’s not just your job to implement whatever project is handed to you. It’s not someone else’s job to determine the ethical impact of your work. It’s yours. Take responsibility for what work you do and the impact you make on the world and don’t shift the responsibility on someone else.
It was also a cool class to take because Moritz Hardt (one of my professors for CS189) popped up in the class content because his research is in discrimination in algorithms as mentioned above. We also covered more on the ethical side of machine bias in some of the same topics that got covered in CS189, such as the ethics of COMPAS from Northgate. It was interesting to see the more “human” side of machine learning in this class which complemented well the more technical side from CS189.
Looking back on the 126/127/189 trilogy, I am very glad I took these classes and I learned not only a lot of concepts, but how to think. These classes really push your technical thinking to the max, and I found that I evolved my mathematical and theoretical thinking muscles. Although some might argue that being too technical takes away from your creativity mind and imagination, I would disagree. I don’t think it’s a zero sum game where if you have one, you lose the other. It’s that now you’re developing thinking muscles that help you see the world in a different perspective, and having one perspective doesn’t make you lose sight of the other perspective. That’s why it’s important to explore different areas of different fields to expand all of these different muscles.