There are lots of majors within Viterbi and even more areas of emphasis or combo-type majors within those departments. It can get confusing about what each course of study means and sometimes students don’t even know what options are out there. That was definitely the case for me and Computer Science Games (CSGA). After being a CS Business Administration (CSBA) major for my first two years here at USC, I hadn’t really had any exposure to the CS Games track and wasn’t quite sure what all the major entailed until a friend from my Software Development Principles class sat me down and explained it all. He talked about the game design courses they take through the School of Cinematic Arts, joining up with Interactive Media and Game Design majors from the film school to learn about how to think about the concept of “play”, creating an interactive and emotional experience with players in mind, and, most importantly, how to actually make digital games through different software and game engines. Getting to still have my coding and technical side through my computer science classes while also delving into my creativity and love for design seemed like the best of both worlds to me! So I made the switch (I will always miss my CSBA buds though) and
honestly could not be happier with my decision.
It’s hard to give a full picture of a major, especially one that’s such a diverse combination of things like CSGA, within a single blog post. If you’re really interested in the details of the major and how it’s different from the other CS tracks, here’s the Viterbi Undergraduate Handbook for you to take a look at. If you go to page 38 you can see the course plans for each major and understand where each overlaps or splits off in different directions. I just want to talk about my personal experience of the day-to-day of CSGA and what I look forward to each day.
In my first semester of CSGA, I took Game Design Workshop and Introduction to Interactive Entertainment along with finishing up my general CS requirements by taking Algorithms and Theory of Computing. I really enjoyed my game-specific classes since I was able to explore a variety of roles within the game production process and learn the core concepts of game design such as the correct terminology, significant games from the past to use as reference, user-centric design, and the pipeline in general. These first couple courses act as a sneak peek into the world of game design as a whole before the major jumps into the backend and programming as well as art creation
required to make our own digital games.
This semester I am in my intermediate game design and game workshop classes along with probably my favorite major class yet, ITP 380 Video Game Programming. In the first course, you work alongside a partner for the whole semester to make a short, playable digital game through Unity, tackling all the stages – ideation, pre-production, production, testing, alpha launch, and post-production – to have fully functional, well developed game that is entirely your own and centered on a technical aspect, narrative story, or area of focus of your choice. I feel challenged everyday with this project and sometimes feel so out of my depth trying to create the 2D-pixel RPG mini-game my partner and I have planned. Yet, even after only six weeks I can see the tremendous progress we have made and the new capabilities I have built in just this short time. We have just over a month to go until our final build and the prospect of that is most definitely daunting, but I am so energized about our game and the final result of all our hard work. Plus I’m learning pixel art which has been so fun for me! I’m not only scripting in C# and using the functionalities of Unity, but I get to actually draw the art seen in our game and feel like I have a tangible, visible part of the final product.
My other games course, Video Game Programming, is through Viterbi’s Information Technology Program and is seriously one of the coolest classes offered at USC in my totally unbiased opinion. :’) When describing the class to me, another one of my CSGA friends told me it was so enjoyable and that I’d really learn the core fundamentals of programming for games, but he also said it would definitely challenge me and be a lot of work. As an engineering student, you get used to the heavy workloads and find your balance so I wasn’t too worried, especially since this course’s assignments would be to make a scaled down version of a different game each week. My friend was certainly right, but when looking at how much I enjoy the coding I’m doing and getting to play the little game I create each week, the pros far outweigh the work to get there. If anything, all that tough coding makes it even more satisfying to see my code work smoothly and be playable by me and my roommates or friends. Watching my Mario character bounce off of mushroom Goomba enemies, PacMan evade the AI-controlled ghosts, and little Zelda scurry across the map has had me smiling all through my labs! I’ve really had such a fun time watching my code literally come alive on screen and I can very easily see my progress each week which is encouraging in a tough major like engineering!
While I tried to mention all the details I could, this is only a brief snapshot of what my major looks like in the grand scheme of things. There are so many ways to adapt this major to your areas of interest or follow a direction in game design that you feel most drawn to. Or you can explore it all and try a bunch of new things in a very supportive, non-judgmental space! That’s what I love about this major: the freedom of it. You make of it whatever you’d like and collaborate with some incredibly talented fellow students, getting you prepared to join the game industry or any other with a truly wide scope of knowledge and abilities. Just like any engineering major, it has its really tough days and I still doubt myself a lot, but the fulfillment I feel as I progress further has kept me going. I’m really grateful to be studying what I do at one of the best games school in the country!