In technology, the conceptual age is defined by cognitive or creative assets, including design, storytelling, artistry, empathy, play, and emotion. Good engineering or good computer science is no longer enough; design must be just as good.7 The transition from information age to conceptual age has been overlooked by most academics in computer science, yet many of the consequences of the transition have been apparent for the past decade at least, including a drop in undergraduate interest, the outsourcing of U.S. programming jobs, and the decline in research laboratories focused on advanced computer science research. Today, another aspect of the transition is emerging: integration of game development into computer science curricula. Here, I discuss what it looks like, how it affects computer science departments, and how it helps drive the overall transition.
The last quarter of the 20th century saw the U.S. economy transition from the industrial age to the information age, a move characterized by major changes in profession, as many people chose to be knowledge workers, rather than manual laborers. Computer science was the driving intellectual, social, and cultural force behind the information age. Computer researchers and developers spearheaded widespread adoption of new technology and were paid well. Academic computer science departments grew in terms of numbers of students, faculty, and facilities; almost all major universities received donations, including new "computer science buildings," and enrollment was so large that standardized tests had to be created for the field. These were the fattest of times, when computer science research drove the growth in the national, as well as the global, economy.
The dot-com crash closing out the 20th century signaled the end of the era. Computer science was now viewed as an unstable career choice, with corresponding drop in interest by young people.8 Additionally, many computer science departments heard complaints from industry that their recent graduates were unprepared to be part of the modern work force. So, following their economic self-interest, students migrated to other fields, and the leading U.S. universities saw major growth in undergraduate business programs.
We can hypothesize that the drop in interest in computer science was part of the natural ebb and flow and fashion of career choice. But doing so is to stick one's head in the sand and hope for the return of yesteryear. A more progressive view is to focus on the concurrent transition from information age to conceptual age. The old focus on "tractable abstractions separate from real problems"2 is no longer acceptable. In the conceptual age, we need to change the direction of the field or continue an unwelcome slide toward irrelevance.
The conceptual age of technology is defined by cognitive and creative assets, with the design side being just as good. We see harbingers in recent business success. For example, Apple has done well with design-driven products enabled by great engineering. On the other hand, Microsoft is a great engineering company that deemphasizes design at its own peril; the Vista operating system, despite its technical success, was not built with user experience as its ultimate goal and had great difficulty with respect to adoption. Much of the rest of the traditional computing industry is shrinking, but the game industry is a segment that continues to grow due to its focus on design backed up by great supporting engineering. The demand for computer scientists capable of building games is high, with large companies like Electronic Arts reporting that 65% of their hiring demand is for programmers skilled in building games. Unfortunately, the kind of computer scientist required by the game industry is not exactly what traditional computer science departments produce.
The game industry wants graduates who are strong programmers and system developers, skilled in game design, and capable of and experienced in game development in large, cross-disciplinary collaborative teams. Some computer science departments produce graduates who are strong programmers and system developers, but most do not produce graduates skilled in game design. Moreover, most do not produce graduates facile in large, cross-disciplinary collaborative teams. The typical computer science graduate has little experience with team software development beyond one or two projects with three to five other computer science students.
Computer science departments can retool themselves to meet these challenges, but, for game development, doing so requires a strong, experienced champion and proper resources. Here, I discuss a particular approach we take at the University of Southern California, outcomes from that program, and questions with respect to transitioning a mature field toward the conceptual age.
If computer science departments are indeed to make the transition, what will they transition into? The game industry also wants graduates with a strong background in computer science. It does not want graduates with watered-down computer science degrees, but rather an enhanced set of skills. This is good news for the departments, meaning they can transition some courses to new material or new foci, create new courses, and still not abandon decades of hard-won knowledge. The best way to think about the transition to the conceptual age is to make the focus the "big idea or big concept," with a follow-on focus on how to build the concept and with what technologies.
Strong programming skills is the first item on the list, meaning an undergraduate program's first four computer science coursesCS-101 Fundamentals of Computer Programming, CS-102 Data Structures, CS-105 Object Oriented Programming, and CS-201 Principles of Software Developmentmust be taught in a rigorous manner by excellent practicing programmers. While computer programming languages abound, and the historic computer science attitude "You learn one language, and it's easy to pick up the next one" is not shared by industry. The game industry will also tell you that it wants the first four programming classes in C++, not Java, according to M.M. McGill4 and 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 immersive 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 must provide the necessary experience so game programmers are industry-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.
Programming interns/job seekers from our program Spring 2009 (35 interviewed in the game industry) found no companies administering programming tests in Java.
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.foundationsofdigitalgames.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).
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 three of the first four programming courses to be in C++ and created game-oriented examples and exercises. The game focus helps motivate students, getting them excited about programming. For Fall 2008, results showed a 28% increase in the number of students with letter grade A in the games-oriented CS-101 Introduction to the Fundamentals of Programming and for Spring 2009 a 49% increase (http://gamepipe.usc.edu/~zyda/GamePipe/Ghyam-Final-MS-Study-2009.pdf). Further analysis of the results is underway to determine whether they reflect superior skills, superior understanding of programming, superior motivation, or some other cause;
Replaced EE with CS. We replaced four electrical-engineering courses on circuit design with computer-science-focused EE-352 Computer Organization & Architecture and parallel-programming-focused EE-452 Game Hardware Architecture. The removed courses represent an older style of computer-science-degree program. We felt it more important that students learn how computer architectures affect programming rather than how to make such architectures. We also felt that parallel programming was highly relevant to both the multithreaded nature of modern game development and multicore processors;
Added EE. We added EE-450 Introduction to Computer Networks as a degree requirement. Networking is offered as an elective in the regular computer science curriculum. Because games need networking, all our students take it;
Cut compiler courses. We eliminated the two compiler courses taken by regular computer science students. ACM eliminated compilers as a requirement from the CS core in 1979. The USC Computer Science Department uses the two courses as large programming-project capstone courses, so we felt we would rather have our students build games. The replacement for the games curriculum is the two-semester CS-491A/B Final Game Projects course. An interesting result is that the Computer Science Department is weighing whether to allow general computer science students to take the Final Game Projects course instead of the compiler sequence; and
No foreign languages. General education requirements for the bachelor's degree in computer science (games) are approximately the same as for USC's regular computer science degree. The degree lacks a four-course foreign-language requirement as in all other USC College degrees, an accident of planning rather than a recommendation.
We felt that parallel programming was highly relevant to the multithreaded nature of modern game development and multicore processors.
When we began planning the degree, the dean of engineering said, "I don't want a weak degree." So we made these changes to the computer science component of the program and are confident we offer an academically strong and industry-viable undergraduate degree.
For the games-side of the bachelor's degree, we replaced 42 units of electives from the general computer science degree with a full course in game development. Hence, the degree looks more like a double major than a specialization. We also have a set of courses on game engineering, game design, and game cross-disciplinary.
Game engineering covers videogame programming, parallel programming on consoles and graphics processing units, and programming game engines, all of which are straightforward software-development courses and all important for game development.
For game design, we send our students to a three-course Game Design Workshop sequence in the USC School of Cinematic Arts Interactive Media Program. Engineers are immersed in gameplay design as taught by master game designers. The first course in the sequenceCTIN-488 Game Design Workshopteaches students how to prototype gameplay using cardboard and hand-drawn art; they basically build board games. We get an interesting response from the engineers we send there. Some rave about it, saying it's the best thing they've ever taken. Some hate it, feeling frustrated they cannot immediately code-up a game. Some hate the first few weeks but in the end come back and say it was a great course. Ultimately, the students who understand the importance of the course and express satisfaction end up with great internships/jobs in the game industry. It's where we see the future game industry technical directors of the conceptual age.
Our approach to creating a cross-disciplinary program was to design courses that could be taken by non-computer scientists, as well as by computer science majors. First-semester undergraduates survey game play, from the start of games to using (among other things) old consoles, old PC games, and emulators. Students come out of the course hooked on our degree program and wanting more. They then take a videogame production course to build individual games using GameMaker and hear from industry speakers on game development. Next is CS-281 Pipelines for Games & Interactives in which they learn how to create assets for games, including 3D models and animations. One achievement is a pipeline asset and source-code management system we designed that is shared by all game-development courses in the program. We teach our students how to use it early on, simplifying and enhancing their ability to develop games in subsequent courses. We also place all our students in a semester-long character-animation course.
In their final one-and-a-half years before graduation, our students become ready for game development. All take a course developing a serious game in a large team for an interested sponsor. Their last year before graduation is in CS-491A/B Final Game Projects building games in large cross-disciplinary teams from August to May, with game designs selected through a design playoff the previous May. The Final Game Projects course is administered jointly by the School of Cinematic Arts and has students from computer science (bachelor's and master's students), interactive media (bachelor's of fine arts and master's of fine arts), fine arts (bachelor's of fine arts), animation (bachelor's of fine arts), music composition, and film scoring. Teams in this class include from 11 to 25 students building significant games over its two-semester run, aiming for contest submission by the end of the second semester.
Strong cross-disciplinary collaboration occurs, with results presented at the end of each semester on Demo Day when game-industry executives are invited to review the students' work; the accompanying screenshots are indicative of the visual quality. Artemis Chronicle, a beautiful action-adventure title (see page 67), demonstrates the powerful features of the NitroX Engine, a revolutionary, complete development framework for creating XNA games. Both the game and the NitroX engine were built in the CS-491AB Final Games course over two semesters. Air Guitar God, a beat-matching iPhone game (below), incorporates a student-designed algorithm for automatically computing beat detection from any song imported into the game. And Slice, an action role-playing game (below), puts battles at your fingertips on the iPhone. Videos of the most recent Demo Day are at http://gamepipe.usc.edu/USC_GamePipe_Laboratory/R%26D/R%26D.html.
At the end of each academic year, we now routinely place large numbers of students (typically around 35) in internships/jobs in the game industry where they are nearly instantly productive. In the Fall semesters in 2007 and 2008, a team on Demo Day was offered a commercial deal to turn their game into a company for further development or prepare to ship commercially. Spring 2009 included five student-built games under commercial consideration.
How has the game-degree program affected USC's Computer Science Department, nudging it along toward the conceptual age? First, I must say we have not dismantled the traditional bachelor's program in computer science, and students continue to enroll in it. Computer science and games students share almost the same core computer science curriculum.
Enrollment concerns were part of our original motivation with respect to the games program, though they have eased, as they have for many departments, according to the Computing Research Association' annual Taulbee Survey (http://www.cra.org/statistics/). For the Fall 2009 semester, 29% of the students in the USC bachelor's in computer science program are in the games program, representing an important influence on the department.
While we have not measured it, probably the greatest effect we see is an apparent "joy of computing" feeling by our students who come to class highly motivated, pour their best ideas into their projects, and produce spectacularly creative results, some of which the game industry wants to commercialize. The graduating students who move into positions in the game industry return to subsequent Demo Days, bring their bosses, and hire more of our graduates. The addition of a creative-design component and making it student-driven and student-dependent is key to this success. Students take ownership of their educational program and aspire to make everything they do shine.
Another component worth mentioning is the commitment of the program's faculty and instructors. The students are in small classes where they have much say in direction and result. The faculty is available to provide technical guidance, mentorship, motivation, and support. It is physically draining if done properly, but if the students recognize their passion for games, they cannot help but be passionate game developers as well. Faculty working directly with our program are the executive producers of some 12 to 14 games per semester. The results of these efforts are visible on the USC GamePipe Web site (http://gamepipe.usc.edu).
We have also been able to create a line of research funding based on and around games.11 It is more than difficult to build an R&D program on games without a pipeline of students learning to build them. Today, we have both. The games program has additionally strengthened the reputation of USC's Computer Science Department in terms of increased R&D funding, improved hiring rates for graduates, attention to the games program in the press, invitations to games faculty to speak at conferences and publish in traditional venues, and other universities desiring to copy USC's success. In Fall 2008, the director of the USC GamePipe Laboratory was appointed an ACM Distinguished Speaker (http://www.dsp.acm.org/) in recognition of the program's achievement. Hiring managers and developers in the games industry now regard us as one of the "best games programs," though we are only in our fourth year of operation. Moreover, traditional USC computer science faculty not currently involved in the games program have begun to ask how they can participate, some have changed their course projects to be game-related, and many ask how we can draft proposals together. The computer science faculty realizes that something important is happening, with some beginning to also guide their own programs toward the conceptual age.
8. Thibodeau, P. Computer science graduating class of 2007 smallest this decade. Computerworld Online (Mar. 5, 2008); http://www.computerworld.com/action/article.do?command=viewArticleBasic&articleId=9066659.
©2009 ACM 0001-0782/09/1200 $10.00
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee.
The Digital Library is published by the Association for Computing Machinery. Copyright © 2009 ACM, Inc.
The fact that game companies refuse to interview candidates who learned Java as their first programming language says more about the game industry rather than whether or not computer science graduates are well prepared to succeed in the game industry.
The problem is that game industry jobs are fewer in number than the explosion of game programmer schools and degrees would lead you to believe. As a result, the game industry creates artificial barriers such as the "no Java knowledge" to keep the supply of qualified software engineers down and salaries up. The next barrier is going to end up being "no game programming degrees" at this rate.
Is the game industry truly that unique that it requires a separate degree? Aren't most jobs in computing fields cross-disciplinary? A software engineer working on a website might communicate with a graphics design department, sales department, marketing department and IT department to develop a website that meets the needs of all of the stakeholders. Instead of trying to meet the needs of a relatively small industry compared to the industries that require employees with computing knowledge, why not just add a "large team project" requirement to the normal computer science degree where graduates will have experience with version control, asset management, etc.? I think many schools already offer this under a "software engineering" degree but those probably don't bring in the enrollment and money that a degree in game programming does.
Displaying 1 comment