I feel like every time I do a takeover, someone inevitably asks me what my favorite class I’ve taken at USC has been. I used to really struggle with this question earlier on when a lot of my courses were just really standard classes that pretty much every CS student across the US has to take, but the benefit of studying Computer Engineering and Computer Science is that we have some unique required courses that you might not find elsewhere!
During fall of my sophomore year, I took EE 250: Distributed Systems for the Internet of Things with my favorite professor, Mark Redekopp! The name is a mouthful and it certainly doesn’t encompass everything that the class is. Let’s get into what I mean by that.
I remember first looking at the syllabus and the variety of topics we were supposed to cover during the semester — from how the Internet works to machine learning to cloud computing to operating systems — and thinking to myself, “How in the world are we going to learn about all of these things if there are entire courses and even degrees dedicated to these topics?” It was initially so overwhelming, but Prof. Redekopp quickly brought up an important point. We wouldn’t become experts in any of these areas by far; after all, we were only second- and third-year students.
His goal was for us to gain exposure into each of these topics and fields in a way where if we were asked about it on an interview or faced with it in a research problem, we’d have the necessary skills to read about, understand, and discuss them. Breadth, and not depth, was the aim, since we’d have more time later to explore! Learning about all of these topics that we hear about in tech news all the time might also spark some potential interest in something more specific as we headed into upper-division coursework, where we have to make many of our own decisions on what classes to take.
We did this in our lecture component with Prof. Redekopp, but we also did this in our lab component where we actually worked hands-on with these technologies. I wrote Python code for a machine learning model and set up TCP client and server sockets, which was super cool to see in action after having learned about how it all fits together.
After having taken the class, I feel fully equipped to teach the 5 layers of the Internet or read machine learning documentation on my own, both of which I don’t think I would feel confident with otherwise. I’ve used some of the topics from the class in every class I’ve taken following — networking and threading in CS 353, operating systems in CS 350, flow control in EE 454, PCB layout and design in EE 477, and beyond.
A year later, I’m a course producer — USC’s version of undergraduate teaching assistants — for that class, where I help lead labs and host open lab hours. I try to convince students that they are indeed learning about stuff that is not only helpful for their future classes but also industry and research!