Classes at UC Berkeley

Somewhere over the midwest

CS Classes#

Most of the classes I took at Berkeley were in Electrical Engineering and Computer Science. Though it pained me immensely to do so, below is a ranking of every upper-division class I took. Opinions are my own, and don’t reflect the quality of the class itself! 1. CS182: Deep Neural Networks, with Anant Sahai: Despite the many criticisms against Sahai, I find him to be a pretty great lecturer. The class was fair and exciting. While the homeworks were challenging, I ended up learning a whole lot. I really enjoyed the project as well. I wish they’d given us some compute resources for the class, which would’ve been nice

  1. EECS151: Digital Design, with Sophia Shao: I don’t think I’ve ever been as obsessed with a final project. Most of this class I would categorize as “eh”, but the process of making a CPU and designing our own optimizations was incredibly rewarding. I’d recommend this class to any software leaning person trying to push themselves!
  2. CS162: Operating Systems, with Ion Stoica: A famously high growth class, and for good reason. The hands-on nature of this class makes the projects extremely grueling — I’ve spent entire days attempting to debug. However, once you’ve designed your own OS, you’re never going to forget how it works. IMO a must-take for every CS engineer.
  3. CS184: Computer Graphics, with Ren Ng: What a fun class. After semesters of math and low-level programming, a class with a visual component was such a delight. I do think the curriculum could use a little more intensity, the final project was a really fun time, and I learned a whole lot. Take this if you want a fun semester.
  4. CS189: Machine Learning, with Jonathan Shewchuk: Call me an ML-head, I enjoyed this class. I often complain that the abstraction-level for classes is too high, but this class got it right — it started from support vector machines and perceptrons, then walked us all the way to neural nets. A great intro to ML. The reason it’s so low is because Shewchuk is a mediocre lecturer, and the assignments were more painful than fuel for learning.
  5. CS294: Building User-Centric Programming Tools, with Sarah Chasins: A pretty good intro to HCI + PL work at Berkeley and beyond. Prof Chasins is a wonderful professor, and this class is a fun intro to research in PL if you took and enjoyed Compilers!
  6. CS186: Databases, with Alvin Cheung: Another one of those classes that feels a bit fake. We learn a lot of algorithms and rules for databases, but we never think from first principles. Because of this, the class never solidified for me — for the most part, I got away with learning the principles and a really good cheat-sheet. Go in with the expectatio that you’ll have to find the hidden depth behind DBs yourself!
  7. EECS126: Probability Theory, with Tom Courtade: I’m a big fan of Courtade’s lecturing style — it works for me. Probability also might be the most relevant of math fields to the future of Computer Science. While I wish had a little less of the plug and chug flavor, a good understanding of random variables and probability spaces has carried me through a lot of very difficult classes. Highly recommend!
  8. CS170: Algorithms, with Alessandro Chiesa: A class I wish I hadn’t taken COVID year. I deeply love algorithms and run-time analysis (yes, I know how that sounds). I think being good at analysing and coming up with algos is what separates the mediocre engineer from the incredible one. However, I think the class leaned too heavily into the mathematical, missing out on training us on how to be great algorithm creators :(
  9. EECS127: Convex Optimization, with Laurent El-Ghaoui: Hear me out — convex optimization is extremely interesting and very boring at the same time. It’s the foundation of most modern ML, and is probably it’s least interesting part. It was also not helpful to take the class with Prof El-Ghaoui, who for all his repute, does not explain this convex topic as well. I would recommend this class with extreme caution — only for those who truly enjoy the math behind CS for math’s sake.
  10. CS195: Social Implications of Computer Science, with Josh Hug: A fun class I feel like I got not much out of. It is rare to discuss the implications of what we create as computer scientists, and I did enjoy this class for the discussions we had in it. However, just talking has never felt like the right format to me — I hoped the class would be more action-based. However, many of my friends really love this class, so YMMV!
  11. CS188: Artificial Intelligence, with Stuart Russell: A fake class. Nothing about it’s structure was set up to incentivize me to learn about AI systems and agents, instead relying on code-fill projects and copy-paste algorithms. A class that is great if you want to coast for a semester, but don’t expect it to teach you anything that you couldn’t pick up by yourself.
  12. CS294: Special Topics in Program Synthesis, with Koushik Sen: My least favorite class at Berkeley. Instructions were unclear. Teaching staff was uncommunicative. Lectures were meandering, unfocused and cobbled together last minute. Slides were often not updated from >5 years ago. This is unfortunately the only synthesis class Berkeley offers, but you’d probably be better off taking in P/NP or auditing the lectures.

Other Classes#

I almost double-majored in Economics! I gave up sometime junior year. I didn’t take as many classes, but for the interested — I’d recommend ECON101A to everyone. A thorough understanding of microeconomics helps in many different domains. I would not recommend ECON101B — macroeconomics is all made up principles, which you forget in a hurry. Only if you care about how the Federal Reserve and bank functioning should you take 101B. ECONC110, Game Theory, is a class I had high hopes for, but one that agressively let me down. ECON115: World Economy in the Twentieth Century, is a intense reading class that you can have a lot of fun with if you don’t care about your grade.

I’d recommend, if you have the time, taking some classes with the Astronomy department — I took a bunch of ASTRO seminars, and they were really cool experiences. I’d also highly recommend teaching. CS375— Teaching Techniques in Computer Science— was a really fun class to take, that taught me a lot about teaching as well as myself.

do what you want cuz a pirate is free#

(you arrrrr a pirate)

All of this to say — take whatever you want, but definitely set aside some time to explore. My friends have had wonderful experiences studying Confucianism, Urban Planning, Plant Biology, Media Studies, History, Sociology, Music, Art Studies, and so much more. Berkeley is a unique university that excels at so many different fields of study — I highly encourage exploring, to grow and learn beyond what you think you need. Don’t just study computers!

If you’re reading this and going to Berkeley, go bears! I hope this university gives as much to you as it did to me. All the best!