The Only Three Classes That Mattered From My College Degree
Only 3 of the 56 classes I took at UCLA matter in my daily software engineering work. Any engineer would agree that those three courses are worth their weight in gold.
All You Need To Pass Any FAANG Interview
Without a doubt, the two most important UCLA CS courses are CS31 & CS32. These classes are how engineering students learn to code. You can tell from looking at each syllabus how valuable these classes are:
CS31 Syllabus → The basics of how to code
CS32 Syllabus → Object oriented programming and data structures
My high school didn’t have any programming classes, so I didn’t even know what CS was until I took CS31. Although the initial programs don’t resemble industry work, CS31 lays the foundation. Building on that, CS32’s object oriented programming and data structures cover most of the programming I do.
Also, these classes teach you everything you need to pass FAANG interviews. While landing these jobs requires a lot of preparation (a topic for a future post), these courses provide the basics you need to tackle any interview question.
These classes taught us how to code but didn’t teach us how to be software engineers. We close that gap with one other class.
Where Programmers Become Engineers
UCLA has a notorious class called CS35L, which is a weekly series of time-consuming labs. This class, although painful, is what creates software engineers.
In it, we learned how to use the command line (e.g. shell commands, scripting) and change management (e.g. Git), which is core to writing code in a collaborative professional environment. Lastly, we learned how to use basic software debugging tools. I’ve always loved using debuggers rather than putting print statements everywhere because of how convenient it is to interact with the runtime of a live program. Now, I use these skills so often at work that they’ve become second nature.
Even though the class was a ton of work, it had the best late policy. Assignments “N” days late would lose 2^(N-1) points. This had a nice effect of being forgiving for slight delays but brutal for anything more than a few days late.
There are a few other classes that don’t matter nearly as much but are worth an honorable mention:
Algorithms (CS180) - Taught me how to do Leetcode hard difficulty questions
Operating Systems (CS111) - Taught me how computers work
Databases (CS143) - Was a nice crash course on SQL
If there’s one thing I’d change about my engineering education, it’s that I would’ve done more practical work (open source & projects) rather than spend all my time on my theoretical coursework. Over to you: What classes do you feel mattered from your college education and why?
If you learned something helpful, subscribe for free to receive new posts
Thanks for reading,
I disagree that only three classes mattered. It simply may be the others matter in ways in which you are unaware. This article touches on some of those details: https://www.pearlleff.com/the-value-of-an-undergraduate-degree
This syllabus is a perfect example of what happens when you just used HTML and not include CSS 😝
But anyways, thanks for the classes. I agree that some classes weigh more than others, but I also think it's important to have a broad understanding of CS since there are times when a class might seem unimportant, but can actually be important in the future.
It's like when Steve Jobs said "Creativity is just connecting things...And the reason they were able to do that was that they’ve had more experiences or they have thought more about their experiences than other people... A lot of people in our industry haven’t had very diverse experiences. So they don’t have enough dots to connect, and they end up with very linear solutions without a broad perspective on the problem."
Just taking more classes in CS will give you more experience and understanding of computers. I think it's also important to focus on open-source projects, but having a broad understanding can make it easier.