Computer Games and Traditional CS Courses
drroman22 writes "Schools are working to put real-world relevance into computer science education by integrating video game development into traditional CS courses. Quoting: 'Many CS educators recognized and took advantage of younger generations' familiarity and interests for computer video games and integrate related contents into their introductory programming courses. Because these are the first courses students encounter, they build excitement and enthusiasm for our discipline. ... Much of this work reported resounding successes with drastically increased enrollments and student successes. Based on these results, it is well recognized that integrating computer gaming into CS1 and CS2 (CS1/2) courses, the first programming courses students encounter, is a promising strategy for recruiting and retaining potential students."
While a focus on games may help stir interest, it seems as though game development studios are as yet unimpressed by most game-related college courses. To those who have taken such courses or considered hiring those who have: what has your experience been?
While games are obviously the result of lots of code, there is very little that a 1st year college student could learn about how to program Grand Theft Auto in 2 or 3 courses... Pong might be a good start...
Modern day games use loads of very high end CS concepts, that are simply out of reach for novices. While getting people motivated for a discipline is the first step to teaching them, this tactic sounds more like advertising than actual teaching.
Growing a problem solving mind by the use of strict logic, and taking things one step at a time is the way to become a great programmer. Setting out to recreate the Crytek engine on your first day is bound to end in failure, and more important, disappointement.
It seems like that's not the point. The goal of having students write games isn't to turn them into game programmers, but to show them that programming can be fun, and then they can use their new skills to solve all sorts of problems.
"Schools are working to put real-world relevance into computer science education by integrating video game development into traditional CS courses."
Nowhere in the article do I find a statement that supports the claim that traditional CS courses are lacking real-world relevance. Can we please stop taking shots at the four years CS degree? If you don't like it, then don't get it. It's only been five years since I graduated my with my Bachelor's in CS and I can tell you that the course I took are highly relevant. I use it every day when I'm coding and thinking about my algorithms. I need to know what the run-time complexity of my methods and how I can use various data structures to make my code more efficient and what the trade offs are. In fact I do it so much that it's almost second nature. These are things they teach you in the core CS classes, at least where I studied that's what happened. My school was very prestigious but not well known for its CS department so I imagine that my education isn't that extraordinary.
Our CS program offered a set of courses that would have allowed students to create games. In fact, that's what the computer graphics course did. I worked with a couple of students who took that class. They reused those same skills again later during our AI project when we created a simulation where the AI played against itself. We weren't exactly creating the next WarCraft III or Civilization IV but some of the fundamentals are there. Likewise, those same skills could be put to use in other projects. The school doesn't have to have a course called "Game Programming for the Real World" for people to see that its course are relevant to the various sub fields in software engineering.
Also, software engineering is a more expansive field than just making games. Programming an O/S or network programming are both very relevant skills even today.
EvilCON - Made Famous by
... I'm kind of wondering why nobody in the game industry has thought of taking User interfaces in games and fully develop them for other software apps as spinoffs for alternate sources of revenue?
I was pretty impressed by Deadspace's in-game UI, now if they could take some great UI concepts and apply them to other applications outside of games the expertise gained in the industry could probably take userinterfaces to the next level.
I've seen things like:
http://www.taggalaxy.com/ ... and always wondered what some guys in the game industry couldn't do if given the time to develop some kick ass UI.
http://cooliris.com/
I have a bachelors degree in Game design, and using games was a big part of how programming was taught at my school.
A lot of people are going to say "but how are they going to learn, games are complex, etc etc"
They don't have to be. A few examples from how I learned...
In my networking fundamentals, we covered opening sockets, threading to take care of the sockets, passing information back and forth, etc. At the point in a normal course, you'd probably do something like...make a lame chat client, or an FTP program or something. Instead the professor said, ok, I want you to make a game that uses these concepts to pass information between computers. I wrote a pong game that used a client / server type setup. One computer ran the server and both ran the clients. The server computed all the stuff and returned data to the clients on where to place the ball, paddles, and the score. I also had a lot of fun doing it.
Another good one. For my programming fundamentals class (eg, first class the freshman took to learn programming) they used python. After we covered the basics, such as arrays, if statements, loops, and so on, we got into user input. Then the instructor turned us loose on a simple header he'd made that let you move ASCII characters around the screen and asked us to make a simple game, such as a maze the user had to move through via the directional keys. It was amazing, because the next class students came in with some really awesome games using pretty complex stuff they'd looked up and taught themselves. By the end of the year long series of classes, freshman were making sprite based games on par with Super Mario Brothers 3 and other scrolling type games using PyGame.
I also learned Direct3D and OpenGL and wrote a few simple games with them to learn how to work with a rather complex API. Then we picked up Ogre and a physics engine (I can't remember the name off the top of my head). My final project was a bowling game that head realistic physics, and you controlled the spin and movement of the ball via the mouse. I showed it to my current employeer (I started out as a co-op) during my interview, and it really set me apart. Granted my job requires very little programming, but it still really made me stand out when I was able to show them something flashy, rather than a program that did a lot in the background but not much in the userland end of things. Not that theres anything wrong with that, but people tend to like flashy cool looking things.
It doesn't have to be a game. Any simulation is fun to create. Especially if it is interactive.
I develop business software. Insurance and banking (mostly banking now), I'd love to develop games. What I don't want is 80-100 hour weeks as standard (pay for 30 hour weeks), competition with every upstart that thinks playing Quake for 20 hours straight makes them leet, companies that go bust and never pay you, a large percentage of projects cancelled, and fighting a perception that you're not doing anything serious with your life because all you do is play games. It just isn't for me.
By all means add more gaming components to the CS courses. Game programming is difficult and challenging and is an excellent excercise. Game physics is unforgiving and requires a good grasp of science. The creative side requires people to develop some very subtle skills. However don't expect your students to all like it or to become game programmers. That'll certainly be one path, but its not for everyone. I'd rather see this as an elective that can be taken early rather than having it forced as some incorporated part of a CS1/2 course. Access to the tools and mentoring on the methods would be useful to those interested in the field.
These posts express my own personal views, not those of my employer
You can make better money in games than in insurance software, and yes, I've done both professionally. To make better money in games, though, you have to work for one of the big studios, or get really really lucky.
So if you want your family to eat well, and never to have to see them, go work for a big game studio.
"Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
In my opinion, programmers are born, not taught. People who naturally break their decisions down into logic structures will immediately see the usefulness in programming and find it interesting from the start. People who don't think this way will never enjoy or become proficient at programming. Changing the way that you present the introductory material isn't likely to change this. Advertising an intro class on "video game programming" might cause your enrollment to swell, but I doubt it will noticeably affect the number of people who make it through the program. If a student doesn't already intuitively understand basic constructs such as if-else chains, loops, variables, etc. in their own decision-making process before they take the class, they aren't going to be able to suddenly start thinking that way once you give them a lecture on the subject.
Isn't the editorial a non sequitur? Using gaming based examples instead of Hello World or business based problems in a traditional CS course is not anything like a game design course. I have a problem with doing this though as while it may be good for the university it is bad for the students who get suckered into a career thinking they will be making games (or that working in the games industry is like making a game for an assignment). This is actually a problem infesting nearly all of modern teaching where "student involvement" is increased by making it fun at the expense of helping kids develop a work ethic*. Being able to work even while bored and disinterested with the task is a much higher predictor of future success than getting good grades because the topic was interesting.
The problem with this is that real world work is often rarely fun unless you are lucky enough to be able to achieve a dream job. Most of us have jobs that while they may be fulfilling have substantial portions that are not fun, and indeed are often gruelling*. This kind of tactic seems like a bait and switch to me. If you don't enjoy the maths and problem solving involved in CS it is not the career for you, no matter what kind of shiny veneer they put on it.
* There is a balance to be had. But I find that too often in early schooling the teachers are using this method instead of instilling in kids a desire to learn and to work hard for future reward.
** I enjoy playing games and analysing movies, but doing that as a job would not be the same as doing it for fun.
========
CINC, 4th Penguin Legion
From my experience, writing games is really quite tedious and not nearly as rewarding as solving programming puzzles and such.
That's your opinion mate. I quite enjoy it, which is why I do it for a job. There is a lot of problem solving if you work on the right games.
I didn't realize we were all bored to tears with our CS courses.
Personally, I went into the introductory programming course at my school (as a music major) expecting the worst. I was taking the course because it was required for some music technology-related courses I wanted to take later on. It was a very traditional class. By the second week, I had changed my major to computer science.
You don't need to make math and science and technology "fun". That attitude is patronizing and obnoxious. If you have competent, passionate instructors then you can teach students.
Making a game isn't necessarily more fun, accessible, interesting or inspiring than making something else. For example, In my second programming course, which was titled Data Structures and Algorithms, two of our major projects were making a text-based Arkanoid clone, and making a text-based spreadsheet application (all C++, by the way). One of the requirements for our spreadsheet was that it be able to save and load 200,000+ cells of data, in a hash table we implemented ourselves. It was much more impressive to me to create an application that could scale like this than the small, limiting world of the Arkanoid game.
It's my fear that we would be dumbing down the discipline for the sake of accessibility. It's something that requires balance, and a good project and a good instructor are necessary. It should not necessarily be, nor not be a game. It should be appropriate to demonstrate the techniques and theory to build upon to foster an understanding of computing.
I don't know what sort of mind it would take to not be awestruck by the power afforded to one by programming modern computers. It speaks for itself.
Long live the BSD license
Of course few of the senior staff have degrees, they most likely came into the industry 10-20 years ago when there weren't any courses related to game development.
Almost nobody taking the CS Assembly Language course ends up getting a job writing in assembly either. Almost nobody taking an Operating Systems course ends up getting a job writing their own kernel.
CS is not a Vo-Tech program. The point is to understand how things are done, not nessecarily to train you to do that for a career.
I program games. I just came back from the office from doing it 11 hours straight because of an upcoming milestone. I went onto MSN to complain about my life. My collage roommate asked me what I did today. I said that one of my tasks was modifying arrows to make them impale enemies "just right". Until his gleeful reaction, I had completely forgotten how lucky I was.
When Argumentum ad Hominem falls short, try Argumentum ad Matrem
11 hours? Lazy. When we were in crunch mode for Diablo II, 15 hours was a typical day, and much of the staff slept under their desks. It was not uncommon to see people get in 120 office hours in a week.
"Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
Maybe it was time for Blizzard to, you know, actually hire some more people rather than work their staff to exhaustion. Maybe then they could do a sequel to a hit game in 1 or 2 years, like console developers do. Oh wait, Blizzard originally WAS a console developer