Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

I would like to know what courses that somebody interested in game development, should take in a Computer Science Career?

I suppose that are necessary for example:

- Discrete Mathematics
- Computer Graphics
- some programming language courses, for example C++ or C#
- AI
- Web programming

what else does anybody involved in this field could recommend me? I got a group of universities that I would like to apply, but their computer science curricula are not the same for every case.

This question is not for generating a debate about which career to follow. I think the natural way will be to follow CS, but here the question is what model would be more suitable according to the standard curricula?

Somebody from mathematics would lack the background in CS, and also that problem comes with people from arts.

Any advice?

share|improve this question

closed as not constructive by Sean Middleditch, Byte56, API-Beast, Trevor Powell, bummzack Feb 25 '13 at 7:33

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

    
youtube.com/… you should watch this youtube video. I think it's better to make games and not worry that you need x, y and z. –  pangaea Feb 25 '13 at 3:41
    
This isn't the site for these types of questions. There's no correct answer to this. If you want a discussion, check out the FAQ and look at the sites that are more oriented towards those types of questions. –  Byte56 Feb 25 '13 at 5:42
add comment

4 Answers 4

TLDR

  • Talk to current CS students and recent CS alumni of the colleges you're interested in. Be aware that they will be biased toward speaking highly of their school, so ask for more advice about specific classes that they thought did or did not benefit them greatly
  • A class about language syntax is a gigantic waste of your time and tuition
  • CS degrees are about getting foundational knowledge not easily self-taught
  • Attend every single one of your Linear Algebra lectures

Also (added because of Panda Pajama's comment), take history and art and music and literature classes.

Foreword to a lengthy answer

The honest truth is that no CS curriculum can prepare you for game development, but every single course in a respectable CS curriculum will benefit you in some way if you are interested in contributing to the process of game development as a game programmer. That's what my answer caters to.

How useful my answer is to you will change as you go through school and work on more of your own game projects and understand better what roles you want to fill. You will probably leave school as a fairly different person from the one you entered as. Your desire to work on games may not change, but how you see yourself going about doing that likely will.

A lengthy answer

I'm going to have to disagree with Josiah Hester and recommend that you not take a C++ course, because it is very likely that the course will be either too out-of-date (using bad inheritance) or too up-to-date (too much standard library), and almost certainly inadequate for working with C++ on the level that you'd be expected to at a game company. You can only get to that level by working with the language on your own time with your own projects, which is time you'd have to spend on top of a C++ class anyway. Save your classroom time for concepts that aren't as easily (or in this case, optimally) self-taught.

Take instead a class that requires that you use C (not C++) to implement low level OS features like a shell, a memory allocator, or a scheduler. "Operating Systems" is the typical name for the upper level version of this course (intro courses may be called Systems or Architecture or something similar).

In fact, don't take any classes named after a specific language. And avoid colleges that have a list of programming languages as their course sequence. If you happen to learn a language while learning about some other topic (hard to learn systems/architecture without learning assembly and C), that's great. But a class about language syntax is a gigantic waste of your time and tuition.

Don't take any class called "Web Programming" unless it's a fun elective type thing and you're looking to fill credits with something that is new material but isn't essential to get into your brain. Same goes for anything about trendy platforms, like "iPhone Programming." Just go watch the Stanford videos on iTunes and make an app on your own. It'll look more impressive if you're applying to be an iOS game programmer somewhere.

University classes can't possibly keep up with what's current in industry, so you have to use them for what they're good for: foundational knowledge not easily self-taught.

If at all possible, your best source of information on the usefulness of any given course will be current students and recent alumni.

Sampling of standard courses you should expect to take

  • Data Structures
  • Algorithms
  • Operating Systems
  • Discrete Math
  • Linear Algebra

Useful higher-level elective classes

(Note, don't take all of these, you might go crazy. Let your developing interests guide you.)

  • Artificial Intelligence (teaches you academic AI, which isn't directly useful for games, but being exposed to it is helpful)
  • Sometimes a course in Graphics can be helpful, research the professors that teach it
  • Machine Learning
  • Heuristics
  • Compilers
  • Networks and distributed systems (again, less practical game programming knowledge, but the value is in the little things you learn along the way)
  • Some deep thinking class on math and computation, usually named something like Theory of Computation, Numerical Computing, or Numerical Analysis

Be wary of classes that are purely about making a project, as game studios will be more interested in projects you worked on outside of class, and will specifically ask you (it was specifically asked of me), "This game project on your resume, did you make that in class or in your spare time?"

This isn't an absolute thing of course, but keep this in the back of your mind as you choose classes. If the professor is really good and you'd really like to allocate part of your semester toward dedicated work on a project, then you've already convinced yourself you should take it.

Note again that the classes I've listed aren't "Making a Flash Game 101." I've beaten this dead horse many times in this answer, but classes like that just aren't worth the cost of a college degree. Even if you get a free ride via scholarship or other means, it will have been a waste of that scholarship/means.

Maybe this is a super US-centric or spoiled attitude about things, but think of it like this: You are the customer at your university. Ensure you receive a product of a certain quality, and do all that is necessary in order to ensure its safe delivery.

share|improve this answer
    
Anyone care to explain the downvotes? I expected it, but at least cite your reasons for the benefit of others. –  michael.bartnett Feb 25 '13 at 19:28
add comment

It depends.

If you want to work on game design, CS is actually not the best way to go. Game Design is more straight math, art, and Communications. Knowing CS is good for implementing prototypes, but the heavy lifting should be done by someone else if you are serious about seeing your vision through.

"Game Development" is fairly broad, you could argue that concept artists "develops" games (which actually happens far more often than you would believe, Ed McMillen of Super Meat Boy and Binding of Isaac fame spends most of his time on Art and Design, he has others do the technical bits for him), so pick an aspect (art, sound, programming, whatever) and push it as hard as you can. Being really good at one thing makes you far more attractive in most cases than being "eh" at most of them.

So lets assume you are set to make a game from start to finish, by yourself. In that case, CS definitely can't hurt. You will be able to make game engines do things they weren't quite built for, you'll understand why a computer is freaking out the way it is, and best of all, you'll know how to at least figure out how to fix it. It is a commitment, and far worth it if you put time in it. You will also find the truth in the saying "Those who make games, don't play games." It takes time.

If you are just in this to "make games", there is no faster way to discourage yourself than learning C++/C. I'm sorry, it is the worst starting point. If it is your first time programming, learn Python, Java, or Game-Maker script, or heck, C#. Only learn C++ if you are willing to commit to the time and effort to master it. You will spend most of your time with C++ LEARNING C++, not making games. You have been warned.

Also be aware, CS itself splits into a lot of sub-fields that may or may not deal with games. Off the top of my head, there are:

  • Algorithms
  • Networking
  • Graphics (shaders)
  • Graphics (hardware)
  • HCI
  • AI
  • UI/GUI
  • Image Processing
  • Database design

...among others. Getting as CS degree is akin to getting a "Teaching" degree. A person who knows better may squint and ask you what your specialty is. Always be asking yourself what you want to do, and do it on your own. Because above all, Computer Science education is based off of methodology more than technology. You "learn to learn". You may learn Java in school, but who knows how long that will be around. Your employer won't teach you the latest and greatest, and your time at work will be spent working on what they give you. Know what you are paying for if you decide to go this path in higher education.

If you are already down the CS path, C++ then conversely becomes a good choice, as it basically has very core concepts built right in, such a memory management, algorithm design, and on top of that, you will need to do things akin to how the computer would do it. A lot of these things are lost on more powerful languages. Take a class on that or C, either will be good foundations. If the starter language is Java (like my school), consider taking an ECE class with assembler or micro-controllers, so you get hands on with lower level languages.

You will want to avoid "pop" classes, as the technology you learn there will already be on its way out when you get out. Conceptual classes are better. Math classes may seem pointless in the moment, but it all comes around when you are trying to maximize processes or transform 3D imagery. Algorithm analysis is good, Statistics is a must. Linear algebra is basically all of Graphics. Software Engineering is learning how to program as a team. Human Computer Interfaces teaches how to program a app for an actual person, not just your (tech-savy, command line master) self.

share|improve this answer
add comment

Aside from object-oriented design, I would highly recommend Machine Learning and Artificial Intelligence be thrown into your docket. Additionally, project-based systems classes are great because they tend to be crash courses in handling a large modular project on a team (which is important for game development).

Learn C. Even if you end up working in C++ or C#, learning C99 is a great trial by fire for a developer, and will give you the familiarity with how computers work to handle a variety of challenges you may encounter down the road.

You'll also want to look at their math departments. If you're serious about graphics, then some linear algebra will help. Also, graph theory can be a powerful tool, and can also inspire some fun game mechanics.

Source: I'm an undergraduate Mathematics student, working as a developer at a gaming company.

share|improve this answer
3  
I disagree with this answer. A lot of people believe that the material in ML and AI courses can be directly used for game AI, but that's very far from the truth. Not only ML and AI are closer to probability than programming, but also game AI is usually very far from theoretical AI. Theoretical AI and game AI do overlap, but only minimally. Also game AI is a very minimal subset of game development, so I'd rather study a lot of history, literature, art and music which are much more important to turn you into a well rounded game developer. –  Panda Pajama Feb 25 '13 at 4:25
add comment

None.

You can make games without a Computer Science degree.

share|improve this answer
1  
While I agree in principle with this answer, I don't think it answers the question. The asker is clearly looking for help in choosing courses, but this answer says don't take courses at all. Not only is this very misleading (you will certainly benefit greatly from many computer science courses), I would argue it is foolish if you do have the opportunity to go to university and decide against it. –  Chewy Gumball Feb 25 '13 at 5:43
    
It does answer the actual question asked. What the OP meant to ask is "Which courses in a CS degree are relevant to Game Development?". –  Stephen Tierney Feb 25 '13 at 7:20
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.