Here's a list of courses that I've taken or plan to take that I believe would be helpful to the would-be game developer (in no particular order).  Some are obvious and required courses of most SE and CE students, like software development I, II, data structures, etc and will not be mentioned.


  • CS 321 - Computer Graphics

    I took this course because as a kid I always wondered what was actually happening to generate the pictures I was seeing on the screen.  Was each pixel set manual by some programmer?  How in the world would you keep track of each pixel on a two dimensional screen that shows a three dimensional model?  I thought that had to be a ridiculously complex problem, and took the course mainly out of interest in the topic.  Also, you learn c++, the language you'd likely need to use if you had to extend the Unreal Engine from full sources.


  • CS 421 - Advanced Computer Graphics

    I'd say this one is pretty relevant, and unfortunately I haven't been able to take it yet.  You do not need an in depth knowledge of how lighting in a 3D scene works, or how to write shaders for probably most development tasks.  However, I believe it would pay dividends to posses that knowledge, especially if you're going to create gameplay/visuals/assets your engine/dev kit don't support natively.


  • SE 3250 - Introduction to Game Development

    Uh, this is the game development class...  Mainly student driven (at least when I took it), you are asked to come up with an idea for a game and see as much of it to completion as possible.  I saw guys put together nice 2D scrollers throughout the course, and others were more ambitious but didn't get too far (myself included).  In the beginning of the course you're taught what makes games fun, and maybe that'll be reasons you hadn't thought of.  You also get practice refining your idea and presenting it to a group of people.  It was for this class that I gave a presentation for a time-waster game I wanted to develop, and according to at least one of my fellow students it was the WORST presentations he's ever seen.  It was pretty **** funny though, and perhaps I'll show it to you guys and we'll decide how bad it really was (I still think the project is a good idea).


  • CS 2851 - Algorithms

    A required course, and a pretty heavy duty one.  While you learn the basics of algorithms in your datastructures class, this course will really force you to think about what's going on when you code up a solution to a problem.  You may think you're being efficient with your solution, but this course will teach you to analyze your solution and determine for sure if there are areas for improvement.  And you'll also be able to spot inefficiencies and make optimizations to code (which could become very useful when interfacing/extending someone's game engine).  There are also many different algorithms used in the game development world that would make fine candidates for the course presentation you will have to do.


  • CS 4881 - Artificial Intelligence

    I haven't had the chance to take this one, but I remember a few gaming problems coming up in my classmates' conversations about the course.  Don't you think the ability to program NPC's to behave certain ways and respond to certain situations would be a valuable skill?


  • SE 2820 - Human-Computer Interaction (or HCI)

    One of my favorite courses and certainly important if you are to design the input/interface system for a game.  You'll study good UI's, **** UI's, design your own, and learn interesting stuff about how the human interacts with electronic devices.  Dr. Urbain does a good job of keeping the course current by lecturing on "natural" means of HCI, such as the Kinect and gestures/motions on mobile devices.


  • SE 4910(I) - Mobile Application Development

    I have taken both of these (iOS and Android) and I found both very informative and helpful.  In iOS I noticed that we focus more on natural input in the form of gestures and motions.  And in Android I noticed we covered the various sensors (that may be) available to an Android device.  If you plan on developing for either platform I'd suggest taking the one for your platform.  If you're at a loss for electives I'd recommend taking them both, as seeing both schools of thought was interesting and potentially useful when deciding which platforms to support.  What if iOS users expect different functionality or look and feel than Android users?


  • MS 3425, 3427, 3429 Entrepreneurship Overview Classes

    I have taken all of these, they are a set of one credit courses that you take over three terms (usually).  The reason I recommend them is that a running theme is idea development or "finding your zebra".  Browse for indie games, can you really tell them apart?  Your games should be different.  These courses also cover a little bit of marketing, financing, and kinda lets you know what to expect if you're going to start your own business.


  • MS 361 - Marketing

    This one I took as a stinkin' Saturday class (yes, those exist).  But it still made this list, must be important huh?  It makes the list because it drives home the notion that you need to understand your target audience.  What are their needs?  What are their wants?  What are their capabilities?  And on and on.  Useful not only for game development, but for any software product.  You'll take a requirements course that asks you to get inside the head/shoes of your stakeholders also.


If you think there are other courses that would be beneficial then by all means, comment away.