Another year, another set of classes under my belt. I had quite a bit of fun and explored just a little further into the EECS spectrum. I’m finally graduating next semester which is perfect timing since the wear and tear of 4 years at Berkeley is really hitting me. I’ve come a long way from the freshman that went to every lecture and did every practice midterm to the senior who skipped half the semester and studies only hours before an exam.
CS161 – Computer Security
Highly recommended class. It doesn’t go over the mathematical details of cryptographic algorithms but instead is about how to use existing algorithms to implement secure systems. The workload is quite light except for one large design project. I loved learning about the nuances between algorithms and various real world examples of security vulnerabilities. For those interested in blockchain and cryptocurrency, it does touch on the fundamental building blocks along with its current issues.
CS189 – Introduction to Machine Learning
For all that it can do, machine learning really just boils down to a bunch of math and data analysis. That is not to say that it is simple. When it comes to ML engineering, choosing algorithms and tuning hyperparameters to maximize performance can be quite difficult. This course offers a great intro into common ML algorithms and their applications. We derive most of the math ourselves and implement them in projects which offers great insight into what used to be a black box. There’s even class competitions where we compete for the highest test accuracy. The workload can be heavy, but it is worthwhile.
EE106B – Robotic Manipulation and Interaction
Honestly, the EE106A/B courses really made me question my passion for robotics. It took a good amount of reflection to realize that robotics isn’t just what these courses focus on and that the part I care about (hardware and low-level firmware) is an equally valid and important part. EE106B covers more of the high level algorithms and mathematics behind robotic systems. Certainly good to know, but not my cup of tea. To be blunt, with the remote setting, lack of physical labs, and poor organization, my experience wasn’t positive. The professors and TAs were awesome so I wouldn’t be surprised if it’s gotten better.
EE151 – Introduction to Digital Design and Integrated Circuits
Easily one of the best courses I’ve taken. I really wish I’d taken this course earlier but sadly it never fit into my schedule until now. I finally got to learn Verilog, work with FPGAs, and just figure out what digital design really is. In addition, I also learned about the physical limitations of chip design and how to balance things such as power and performance. The workload is pretty light for most of the semester except for the final project which is basically the 61C RISC-V project on steroids. Thankfully, we used Verilog instead of Logisim. I had quite a lot of fun in this course and would recommend it to anyone even remotely interested.
EE127 – Optimization Models in Engineering
All of the remaining interesting courses were being offered in the Spring, so I added EE127 as my fourth technical course. It’s a great introduction into how to think about and formulate optimization problems as well as solving them practically with software. The workload is decently heavy, especially with amount of linear algebra involved. Since I already took CS189, I didn’t learn very much new material and this class was more of a filler for the semester.
EE130 – Integrated-Circuit Devices
After getting destroyed in the semiconductor physics portion of EE105 which made me steer away from analog circuits, I finally took a class dedicated to it. It’s extremely well taught and the professor does an amazing job of explaining things clearly and providing in-depth notes for all the lectures that I did miss. The homework and exams are difficult, but fair and doable in the time allotted. I walked away from the class feeling like I had a fundamental understanding of common semiconductor devices. Basically, band diagrams are your friend.
EE143 – Microfabrication Technology
This class has an excellent reputation, but the new visiting professor for this semester did not do a great job. Ultimately, this is the one and only class that I’ve ever dropped in my entire undergraduate career. Between the poor lectures that didn’t really point out important topics and the lack of homework to reinforce learning, I found it difficult to have any motivation in this class. The first midterm was also the perfect example of an exam being completely different from the lecture material. I still remember the professor roasting the class for how poorly we did especially for Berkeley students. I believe the old professor is coming back to teach, so I’d still recommend this class for future generations.
On the other hand, the lab portion of the class was extremely well done and the TAs were amazing. We actually went through the whole process of fabricating MOSFETs and other devices on a silicon wafer. While the quality and yield of my devices was not great, I had a blast doing it.
CS164 – Programming Languages and Compilers
Following my theme of demystifying EECS, this class did not disappoint on making compilers understandable. As with operating systems, it’s mainly a huge logistics issue with lots of moving parts that need to work together. The professor was new, but did an excellent job teaching. The workload is pretty normal and the homework did a great job at expanding what was taught in lecture in a manageable way. It also offered my first taste of a real functional programming language, OCaml. This class also had the first final exam where I studied during the final since not attending most lectures meant not knowing the notation used.
SpaceX Summer 2021 Avionics Internship
This summer I was part of the Starship Test Engineering team working on various projects. Whereas my Build Reliability internship helped teach me how to design, this internship actually put those skills to the test. It also offered great insight into how test systems work and how formalized the testing process is. Having knowledge of both hardware and software was pretty invaluable in getting my projects done well. I learned quite a lot and even dabbled a bit into power electronics which I did not expect. This was the first summer I didn’t want to go back to school, which is a great sign I should graduate.
It’s funny how life doesn’t really ever go exactly as planned. I originally intended on getting a 5th Year Master’s and applied for a couple internships. Then an Apple recruiter called me and convinced me to try full-time recruiting instead. As luck would have it, I got rejected by Apple but got offers from Tesla and Neuralink. Still figuring out where I want to end up, but I’ll pick one eventually.