Game development - Software Engineering or CS?

Started by
8 comments, last by frob 9 years ago

So I'm a sophmore with an SE major right now. Recently, I was told by an academic adviser that I shouldn't be pursuing a software engineering degree, but rather a computer science degree if I plan on going into game development. He explained that the SE degree's focus doesn't apply to any game development, as far as this college is concerned. This obviously came as quite a surprise to me. I'm getting conflicting answers from all professors at my university over which would be better for game development. Does anyone on here have any advice? I can post the curriculum for each major.

Advertisement

It would be interesting to see the links to the curriculum.

However, I think by-and-large your advice is coming from academic folks who have spent little-to-no actual time in the industry they're claiming to advise you about. An SE degree and a CS degree can equally apply (or not) to a career in games development.

Unless it turns out that your SE and CS programs at this school are very different from the traditional such programs, I don't see any reason why you should be considering changing your major over this.

The main reasoning behind his suggestion was that the SE program here kind of fast-tracks you through the language and such, and then throws you into the security and database courses early on. Once that's done, it's mainly focus on developing larger systems and management software for corporations. Right now I'm in a course where we spend the semester working on an air-travel agency program, developing databases of airports and flights, managing them and parsing them, all while using an agile development method. He said that since there's such a focus on those aspects, it's not particularly good for game development, since the program actually discourages students from taking the courses for graphics, openGL, etc. I've attached the three curriculums (CS has a CT and CIS emphasis) What I'm really worried about is the whole senior project taking up so much time, and not being a game. I mean as of now, I'm usually going to class at 9, and working until 10pm every night. So fitting in time for my own game dev stuff is near impossible.

Not actually having Word, I can only sort-of-read those files.

But they appear to be basically bog-standard CS and SE courses. Either one would be fine for getting into the games industry as a programmer. I dare say your adviser is just wrong.

Certainly, not everybody needs to know OpenGL and graphics programming in games, and similarly it can be useful to understand networking and databases, et cetera.

I'd say it's down to which course focuses more on things you want to know and are interested in. That will have a far greater impact on what you get out of the courses themselves, and consequently a far greater impact on your ability to get a job.

"Software Engineering" tends to have tons of stuff like software life cycle, project management, requirement specification, system analysis, UML and things along those lines. I'd go with a pure CS degree, then again I loathe all that "software engineering" stuff, so I'm biased.

Now, as Josh says, what should matter is what you want to know. "Usefulness" is in the eyes of the beholder.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator

Software Engineer here. I work in web development for a Fortune 100. I also teach at University with a Masters in Computer Science and run a game development group (Official Unity Users group for Memphis,TN).

Both of your programs look adequate for learning game development. However, I can say this. Game programming relies a lot on being able to do things "fast". In computer science there is a big emphasis on the notion of running time and finding the running time of your algorithms. There is less oh an emphasis in software engineering. Corporate systems do have to run in an acceptable manner but I've found through working on enterprise level applications that the emphasis is much less oriented towards running at peak efficiency and more on getting all the features(which can be very complex) implemented and tested.

That extra emphasis on algorithm running time can help you out tremendously on game development. Looking at your syllabus it looks to be the class System Analysis and Design.

For instance I was creating a voxel engine similar to minecraft. I wanted to be able to remove chunks that were sufficiently far from the player. Initially I had all the chunks in a list and I just iterated through that list every few frames testing the distance from the chunk to the player. The iteration proved to be ineffective resulting in a considerable fps dip. However I realized that using a priority queue to store my chunks had much faster lookup times then simply iterating through a list. I won't go into the specifics of priority queues(also called min/max heaps) but it improved my framerates when checking for chunks to remove.

SE, not CS. Your advisor is clearly not an accomplished developer.

-A game developer, who pursued both degrees.

As a person with a CS degree either can be great for game development. It matter to how you apply the knowledge you gain. The SE classes that I did take have helped me with planning and workflow designs. My CS classes were more of coding and problem solving. Both can be used to create games.

In the end you need to look at the classes in each lineup and see which you favor more.

Developer with a bit of Kickstarter and business experience.

YouTube Channel: Hostile Viking Studio
Twitter: @Precursors_Dawn

The wayyyy too simplified summary - CS has more theory, SE has more practice. Both are useful.

Whichever one you choose, you should learn the other one in your own time.
e.g. if you have friends in CS learning something you're not -say, ordinary differential equations - then ask them to give you a high level explanation of what they are. They might appreciate the opportunity to solidify their own study, and you get a heads up that converts an unknown-unknown in your knowledge into a known-unknown, which you can persue later.

The most important thing is that when you finish your degree that you also have a personal portfolio to show off, made up of your extra-curricular / hobby projects (not your coursework).

i.e. whether you get to take a GL class or not, the appearance of a GL project in your portfolio is entirely down to how you spend your free time. The class might just give you a small head-start (maybe - assuming the course isn't horribly outdated).

Personally, I highly recommend modding (total conversions, etc) as a personal project, as it allows you to learn and demonstrate many aspects of game dev in a short number of part-time years.

Personally, I did an SE major, but took as many CS electives as I could.
I also got hired off of my modding work before I'd even graduated :D

Looking over the documents,

The first document, "CS/CIS", looks rather odd with languages of c++, cobol, vb.net, accounting, marketing, and business courses. That is not a Computer Science degree, and it won't suit well for games development.

The second, "CS/CT", looks like it might work well with games if you customize your schedule a bit. The co-requisites and generals look good as a start. I'd consider adding more math (especially linear algebra and stats) and making sure your electives include both AI and computer graphics. I'd add a physics course (the SE includes "general physics I and II" that seem reasonable). You'd probably also want a computer theory course since they typically cover FSAs / state machines and other necessary stuff.

The third, "se handout", looks like the most games-friendly program of the three but least customizable. In covers the basics of algorithms and data structures, network development, and has a good mix of general requirements. It requires physics which is nice. The program has a choice between {AI, Databases, Graphics, computer architecture} where I recommend all three except databases.

Math for both CS/CT and "se handout" looks good, especially if you take the optional courses. Math includes calculus (very enabling, although sadly too many programmers get by with iterative methods and never make that final leap to calc), stats (games use probability everywhere), discrete mathematics (which is how computers compute), and linear algebra (the math needed for 3D worlds).

I would also suggest a course either on compiler theory or scripting depending on what is offered, and perhaps a course on UI design.

This topic is closed to new replies.

Advertisement