Tuesday, May 7, 2013


  • Ask the Experts: She Blinded Me With (Computer) Science


  • Dear Experts,
    I'm currently a senior in high school in California, graduating this month and attending community college soon after. I want to become a game programmer, but I'm having quite an issue selecting classes and choosing a major. 
    I want to work with computers and codes, so I decided to follow computer science. Is that the major I should follow? Should I study computer programming rather than computer science? Computer systems or computer information systems? And which classes should I take, if I do take computer science?
    Another concern I have is about math. I am sincerely not great at math. Which computer science subjects should I focus on if I don't want to take much math-or if I really have to have math, then what should I be looking at?
    Thanks for your time, and I hope you guys can help me!

    -Two Plus Two Equals Does Not Compute

    Dear Two Plus,
    Learn C++.

    That's Just Part I


    "Learn C++" is of course not the whole answer, but let's start there. C++ is still the most widely used programming language in game development, and you should be able to use it solidly. Many people who know C++ are self-taught; between beginner books and web sites, there is plenty of information out there for you to pick up C++ on your own. 

    However, not everyone has it in them to learn this way, and it's nothing to be ashamed of. For me, for example, I know that I absorb so much more when I'm in a structured learning environment that meets at a specific time and place, where instructors both explain and demonstrate a particular skill or theory. I enjoy being in a classroom environment, and I enjoy active discussion. That's just how I learn. If left to my own devices, I can never seem to muster up the discipline to follow through and truly learn anything (hence the 1971 hand-me-down six-string acoustic guitar that has been collecting dust in the corner of my bedroom since 2003).
    So, as with all advice about education and learning, the first step is to determine what type of learning environment you thrive in. Figure that out, then go learn some C++. If you decide you need to learn C++ in a classroom environment, you shouldn't have any trouble finding those classes in your community college's computer science department ... which leads me to Part II of the answer.

    Part II: CS? Yes!

    Is computer science what you should study? At the undergraduate level, yes. Will it hurt you to study computer systems instead? Probably not. The key here is that you are fresh out of high school and ready for undergrad. Your undergraduate education needs to be your base, your foundation for future programming, and as far as that is concerned, you're likely to establish the same framework in any of the departments that you named.
    Bear in mind that by the time you finish your college years and possibly move on to graduate studies or supplemental learning, technology will have changed dramatically. What's important is that during the next few years, while your mind is still pliable and hungry, you build a foundation of knowledge that will serve you forever as a programmer, despite the changes in technology.
    I looked at the curricula of two schools that specialize in game programming to determine what other kinds of classes a potential game coder should take. Lo and behold, Full Sail offers a three-part series for C++ programming, so if you didn't believe me before, now you have more proof that you've got to learn C++.
    I also talked to some people at the Guildhall (which is a specialized school within Southern Methodist University), who said they don't even teach C++ at all! Instead, they require that students know C++ before even being accepting into the program. To clarify, Southern Methodist University does offer a solid BS degree from the department of Computer Science and Engineering with a track in Game Development; the idea is that a student can build his or her foundational knowledge at SMU as an undergrad before moving into the Guildhall itself (which is more akin to a master's-level of study). (For a complete explanation, see SMU's School of Engineering and Computer Science web site.)

    Part III: Math (sigh)

    Not long ago, I spoke about this very same topic with Jeff Ward, lead architect at Boston games middleware company Orbus Gameworks and former associate programmer at Bethesda Game Studios. His advice to programmers is to study three areas: math, theory, and something you find interesting. By the end of your second year in an undergraduate program, you'll probably have a strong idea as to "something you find interesting," beneath the umbrella of computer science. You don't have to decide that now. 
    But you do have to take math and theory. Sorry, Two Plus.
    Start with some algebra. If you don't remember a darn thing from high school algebra, I would recommend taking a refresher course. Conquer algebra first. If you don't, you will have a very difficult time getting through your other courses.
    For those of you who actually enjoy math (Anyone? ... Bueller? ... Bueller?), go nuts! Calculus, trigonometry, physics, differential equations (we always called that class, "Diffy Qs"). Math will never hurt you as a game programmer. 
    Jeff Ward actually had about 10 pieces of advice for anyone who wants to become a game programmer, which will appear in an article called "Top 10 Tips" in the upcoming Game Career Guide, a special annual issue of Game Developer magazine. Look for on newsstands and on this web site in July!
    Good luck, Two Plus, and hang in there!

No comments:

Post a Comment