I always joke that in some alternate dimension, I would’ve been a computer science games major. That isn’t to say that I don’t like my major, computer engineering and computer science (CECS); I do truly love and appreciate everything my major has taught me. Considering my lifelong passion for games, it doesn’t seem out of the question that in another dimension I would’ve put down “computer science: games” on my application or that I would’ve switched into the major sometime early in my undergraduate career.
Just because my major continues to be computer science and computer engineering, that doesn’t mean that I haven’t been able to pursue my interest in games. The whole point of this blog is to show you how I went about doing that! A question that I get a lot, specifically from people considering the computer science: games major is: what can I do with that degree? It’s important to note that the major, at its core, is still a computer science curriculum and that you’ll be learning all the same fundamentals as your comp sci peers. Thus the overlap in skills that you learn between all the majors under the computer science umbrella (CS, CSBA, CECS, CSG) is considerable!
It’s this overlap that has allowed me to take a considerable amount of classes under the computer science: games curriculum, even as a CECS major! The first class I took related to games was ITP 385: Video Game Programming. It taught me all about the different applications of linear algebra used to program games; stuff from object collision to pathfinding to physics and beyond! I really liked how it brought into play so many of the abstract topics I had learned about in linear algebra and applied it in the best way possible: by making games!
My next and favorite class I’ve taken thus far at USC is ITP 485: Programming Game Engines. It built upon many of the linear algebra programming I learned in ITP 385 and abstracted all of it to be built into my own basic game engine! I learned so, so much about what it takes to build real-time graphics systems which has been invaluable knowledge for someone like me who hopes to work with real-time systems once I graduate.
Lastly, and most recently, was CSCI 420: Introduction to Computer Graphics. This class took a slightly different tone compared to the aforementioned classes; it still used a lot of the same math I had seen in both ITP 385 and ITP 485 but it considered itself more with using that math to render and transform objects rather than designing abstract systems to handle that job. Definitely got down and dirty with all the math that is involved with setting up actual pixels to be displayed on the screen!
To wrap up the biggest lesson I want people to take away from this blog is that your major shouldn’t limit you when it comes to choosing classes. My passion for games drove me to seek classes that lie outside of my traditional major and the flexibility of Viterbi really allowed me to lean into that! Go out of your comfort zone and take that class!!