my own private communications with
directors of human resources in major
game-development companies. Many
universities switched to Java with the
Internet boom, as it is easy to resource
a programming laboratory for Java,
and Java support for the user interface
is extensive. But the game industry
programs mainly in C++. Many game
companies say they will not interview
or hire someone whose first programming language is Java. Computer
scientists might argue about the virtues of programming languages, but
most console and PC games are built
in C++. From a C++ perspective, our
students can teach themselves other
useful languages, learning Objective-C for iPhone game development or
C# for games with XNA in a single semester. The industry is basically saying it wants strong programmers with
multiple courses in C++, its primary
development language. The USC experience is that 100% of its students
interviewed for programming positions are given three-to-four-hour-long programming tests, with almost
all companies administering the tests
in C++. We had one company (NCSoft)
test in C and another (Microsoft) indicate the test could be done in C++, C,
or C#. Programming interns/job seekers from our program Spring 2009 ( 35
interviewed in the game industry)
found no companies administering
programming tests in Java.
Strong skills in system development is another must. The figure here
outlines the components that must be
juggled by a programmer developing a
typical networked game, touching on
much of computer science and then
some. Moreover, the game software
must run multithreaded in a well-balanced manner and provide an immer-sive and entertaining experience to
the game player. Game development
is viewed by some as systems design.
Programmers comfortable in cross-disciplinary groups is third on the list.
Industry wants programmers who are
able to generate software based on
the vision of designers, work with artists to generate the right display and
feel, and know how to participate in
large-team development efforts. The
traditional computer science student
is far from this.
Computer science departments
Programming
interns/job seekers
from our program
Spring 2009 ( 35
interviewed in the
game industry)
found no companies
administering
programming tests
in Java.
must provide the necessary experience so game programmers are in-dustry-ready on graduation day. This
means that graduates must have built
a significant game by collaborating
with other students, not all of whom
have backgrounds in computer science. Grads should also be familiar
with the pipeline-development process and asset-management systems,
both aspects of game-industry development potentially useful throughout
the program. Such experience is very
different from traditional computer
science-degree programs in which
software-development teams are
small, and there is no strong requirement for asset management or source-code base sharing or versioning.
Big Game Program or Baby Steps?
Computer science departments
changing their focus toward game
development is an obvious approach
toward preparing students for the
conceptual age. Many universities
are building game-development programs within or aligned with their computer science departments.
1, 3, 5, 6, 9, 10
The annual Foundations of Digital
Games conference ( http://www.foun-
dationsofdigitalgames.org/) focuses
on this important transition.
How does all this directly affect the
departments? Consider two separate
efforts: the USC GamePipe Laboratory and the University of Washington,
Bothell, the latter covered in the article “Computer Games and Computer
Science” by Kelvin Sung (on page 74).
uSC GamePipe Laboratory
The USC Department of Computer
Science offers both a bachelor’s degree in computer science (games) and
a master’s degree in computer science
(game development).
12 Students interested in Ph.D.-level topics are encouraged (for the moment) to apply to the
traditional computer science Ph.D.
program. The bachelor’s in computer
science (games) program includes 37
units of traditional computer science
and 42 units of game-development
courses. The computer science courses are the same as those taken by
regular students in USC’s bachelor’s
computer-science program, except
for the following modifications:
Programming courses. We rewrote