The systems programming concentration emphasizes the internals of a game – the game engine and other systems that make a modern games possible. In addition to computer science fundamentals, students in this concentration cover additional topics in computer hardware and operating systems essential to developing game engines.
Computer Science/Software Engineering
Game Development Studio
Students must earn a grade of C- or higher in all major elective courses.
Open elective credit also is required to meet the minimum graduation requirement of 192 hours.
INTRODUCTION TO COMPUTER SCIENCE I
An introduction to problem solving, algorithms and structured programming using a higher-level programming language. The course will focus on skills for developing algorithms, and for writing and debugging programs. Students will learn how and when to use loops, conditionals, and functional abstractions in the context of problems motivated by real world applications. PREREQUISITE(S): MAT 130 or Mathematics Diagnostic Test placement into MAT 140.
INTRODUCTION TO COMPUTER SCIENCE II
An intermediate course in problem solving, algorithms and programming. Programming skills are further strengthened through more complex and larger programming assignments. The assignments will also be used to introduce different Computer Science areas (e.g. a Client/Server application for the Distributed Systems area). Classes and object oriented programming are motivated and introduced. PREREQUISITE(S): CSC241
C++ FOR PROGRAMMERS
This course covers the essentials of C and C++ programming, focusing primarily on the topics of memory management and object-oriented programming. Topics include pointers and dynamic allocation, operator overloading, copy constructors and destructors, inheritance and polymorphism. PREREQUISITE(S): CSC 242 or CSC 243 or CSC 224 or proficiency in another programming language.
COMPUTER SYSTEMS I
A course on computer systems topics, focusing on machine-level programming and architecture and their relevance for application programming. Information representations, assembly language and debuggers, processor architecture, program optimization, memory hierarchy and caching. PREREQUISITE: ((CSC 383 or CSC 393 or CSC 301) and Math 140) or (CSC 224 or CSC 261 or CSC 309 ) and graduate standing.)
COMPUTER SYSTEMS II
A course on computer systems topics, focusing on operating systems components and their relevance for application programming. Linking, processes, virtual memory, dynamic memory allocation, system level I/O, networking and network programming, concurrent servers and web services. PREREQUISITE: CSC373
DATA STRUCTURES IN C++
This course covers the design, implementation, application and analysis of algorithms on a variety of data structures, including lists, stacks, queues, trees, heaps, hash tables and grpahs. Implementation is done in C++, in particular with the use of templates and the C++ standard template library (STL). PREREQUISITE(S): CSC 262 or CSC 309
OBJECT-ORIENTED GAME DEVELOPMENT
Students will learn principles and techniques needed to build robust and efficient large scale game software systems. Principles of object-oriented modeling, design, implementation, and testing of large-scale game systems will be emphasized. Topics include design patterns, application frameworks, architectural design, and the applications in the software development process to improve the extensibility, maintainability, and reliability of software systems. PREREQUISITE(S): CSC 393
FUNDAMENTALS OF GAME PROGRAMMING I
Many computer games are based on physical interactions between game objects e.g. collisions, evasions, pursuit, etc. Design and implementation of these actions is not an easy problem. Concept and character development, storyboarding, prototyping, testing and implementation will be discussed. Students will gain hands on experience in game programming using a low level graphical library. PREREQUISITE(S): CSC 262 or CSC 309
FUNDAMENTALS OF GAME PROGRAMMING II
The class moves beyond the basics of game programming and into advanced programming, architecture, and integration techniques. Topics include working with a production-quality content pipeline, integration of external digital content creation tools, scalability, complex animations, shaders, environment construction, gameplay techniques, controllers, camera theory, and collisions. PREREQUISITE(S): GAM 374
GAME PERFORMANCE OPTIMIZATION
This game programming class will focus on developing software to efficiently use the fixed CPU power and resources that are found in today's console and mobile devices. This course will use real-world game examples that demonstrate performance and optimization issues that software architects face in game development. These problems include: performance enhancements through extended matrix instruction set, dynamic memory usages, performance related to increasing run-time systems to very large scale, C++ language enhancements and extensions, algorithms, streaming and profiling. PREREQUISITE(S): (CSC 301 or CSC 383 or CSC 393) and CSC 374
COMPUTER GRAPHICS DEVELOPMENT I
This course presents the fundamental mathematical foundations of graphics including an introduction to the basic geometric constructions of points, vectors, transformations, matrices and homogeneous coordinates. The course will explore applications of these mathematical techniques to rendering 3D scenes and lighting and shading surfaces in 3D. Advanced topics will include several key techniques from computational geometry such as the computation of object intersections and applications to rendering 3D scenes and object collisions. The focus of this course is on building the software from scratch rather than using a graphics application programming interface (API) so that students will gain a deeper understanding of the techniques they will be using in later courses through an API such as OpenGL or Direct3D. PREREQUISITE(S): CSC 300 or CSC 383 or CSC 393
COMPUTER GRAPHICS DEVELOPMENT II
(Formerly CSC 329) Basic graphics architecture. Coordinate systems. Three-dimensional representations and transformations. Simple visible-surface algorithms. Introduction to illumination. Gouraud and Phong shading. Antialiasing. Texture mapping and elements of animation. Students create a graphics package using a high-level graphics API such as OpenGL. PREREQUISITE(S): GPH 321 or(CSC 393 and either MAT 220 or MAT 262)
DISCRETE MATHEMATICS I
Combinatorics, graph theory, propositional logic, singly-quantified statements, operational knowledge of set theory, functions, number systems, methods of direct and indirect proof.
MAT 130 or above or equivalents or placement by test is a prerequisite for this class.
DESIGN AND ANALYSIS OF ALGORITHMS
Techniques for designing algorithms including: analyzing algorithms (big-O, recurrence relations) and divide-and-conquer (quicksort, mergesort). Additional topics chosen from: the greedy method, dynamic programming, backtracking, branch-and-bound and string matching. PREREQUISITE(S): (CSC 301 or CSC 383 or CSC 393) and MAT140. MAT141 Recommended.
DISCRETE MATHEMATICS II
Methods of direct and indirect proof, set theoretic proofs, sequences, mathematical induction, recursion, multiply-quantified statements, relations and functions, complexity.
MAT 140 is a prerequisite for this class.
An introduction to modern database systems; the course covers the traditional concepts and techniques of database systems including the relational model, SQL, indexes and normalization as well as a selection of advanced topics such as constraints and triggers, transactions, database programming, semi-structured data, and recursive SQL. PREREQUISITE(S): (CSC 301 or CSC 383 or CSC 393) and CSC 373
A study of the development of expert systems. Students will use commercial packages to develop standalone and embedded expert systems. Topics will include rule-based systems, decision trees, forward and backward chaining, inference, reasoning with uncertainty, and intelligent agents. PREREQUISITE(S): CSC 301 or CSC 383 or CSC 393.
PRACTICES OF GLOBAL SOFTWARE DEVELOPMENT
This course studies the challenges and solutions for developing software in a global environment. Topics covered include strategic issues related to allocation of tasks; communication issues that arise due to distance, time zone differences, infrastructure support, geographical dispersion, and lack of information communication; coordination complexity; cultural issues, technical issues related to information and artifact sharing, and architectural design, and finally knowledge management issues. Some sections of this course will include a hand-on global development project in conjunction with teams of students at other universities, while other sections will focus on a more in-depth theoretical discussion of these issues and concepts. PREREQUISITE(S): SE 325 and CSC 391
INTRODUCTION TO OPERATING SYSTEMS
An advanced course on operating system design and implementation. Process management and scheduling, memory management, file systems, device drivers, access control, and virtualization will be covered. The emphasis of the course will be on implementing components of a functional operating system. PREREQUISITE(S): CSC373 and CSC374
TOOL PROGRAMMING FOR GAME DEVELOPMENT
Today's games are built with large amounts of data. The stability, usability, efficiency, and flexibility of the tools that process game data plays an enabling and critical role in game development. Topics include the content pipeline, processing or standard file formats, integration of external tools, file format design, command line and graphical user interfaces, and procedural content generation. PREREQUISITE(S): CSC 373
ARTIFICIAL INTELLIGENCE FOR COMPUTER GAMES
Artificial Intelligence (AI) is one of the essential components of a computer game. The course introduces basic concepts of AI. Emphasis will be place on applications of AI in various genres of computer games. In the implementation component of this course students will be exposed to the existing AI game engines (middleware), which contain implemented AI algorithms that are ready to be applied into game code. These algorithms include: decision trees, pathfinding, neural networks, script-driven game object behaviors. PREREQUISITE(S): CSC 301 or CSC 383 or CSC 393
FOUNDATIONS OF ARTIFICIAL INTELLIGENCE
An in-depth survey of important concepts, problems, and techniques in artificial intelligence, including search, knowledge representation, logical reasoning, and reasoning with uncertainty. A particular focus and a unifying theme of the course will be the concept of intelligent agents. No prior knowledge of AI is required. The course is particularly suitable for graduate and advanced undergraduate students who want to gain the technical background necessary to build intelligent systems, or who want to prepare for more advanced work in AI. The concepts and techniques learned in this course will be directly applicable to many other areas of computer science including software design, distributed systems, databases, and information management and retrieval. PREREQUISITE(S): CSC 301 or CSC 383 or CSC 393.
Concepts of symbolic programming as embodied in the language LISP. Basic data and control structures of LISP: symbolic expressions, the interpreter, functions, recursion, iteration. Techniques for prototyping and building conceptually advanced systems in an environment that encourages procedural and data abstraction. Advanced topics may include Prolog, intelligent tutoring systems, intelligent agents, and natural language processing. Assignments will focus on basic AI techniques, but the class is intended for anyone who will need to rapidly develop large complex systems. PREREQUISITE(S): CSC 301 or CSC 383 or CSC 393.
DESIGN WRITING AND PRESENTATION
This lecture course focuses on effective communication throughout the development process from writing game design documents to playtesting reports and postmortems. Special attention will be paid to the critical and analytical components of design writing and the clarity of articulation. A further emphasis is put on the preparation and delivery of engaging presentations, particularly game pitches. PREREQUISITE(S): GAM 226 and WRD 104
EVOLUTION OF GAMES
This lecture course introduces students to the evolving forms, uses, and design of games. Topics covered include the relationship between game design and play, the role of games in fueling the technological imagination, the changing contexts in which game are designed and played (art, social impact, health, education), and the rise of the independent games sector. Students will produce weekly written responses to course material, lead a seminar discussion in small teams, and produce a final written or multimedia paper. PREREQUISITE(S): None
PHYSICAL PROTOTYPING FOR GAMES
This course will approach the study of Game Design with a focus on breaking designs into manageable elements and prototyping those elements in order to refine play. Students will learn how to develop game ideas and game systems with a focus on play procedures, rules, and designing for various types of possible players. Prototyping will involve various real world media in addition to paper write-ups and layouts. Students will engage in brainstorming exercises, develop game ideas and systems, and review and repurpose existing game mechanics. This course will help students find the balance between hard (planned logical) design and soft (more organic/emergent) design in order to develop compelling gameplay. PREREQUISITE(S): GAM 224
ADVANCED LEVEL DESIGN
This class builds on topics covered in earlier courses, with a focus on creating believable worlds for videogames. This course emphasizes designing large exterior environments, advanced mission scripting, and integrated storytelling. Using a 3D level editor and formal level design process, students create fun, polished, memorable virtual worlds. PREREQUISITE(S): GAM 341 or GAM 392
MAKING DEEP GAMES
This workshop investigates the process of designing games about the human condition. It specifically focuses on the potential of game to tackle profound and abstract ideas (e.g. loyalty, dignity, courage and trust) by ways of metaphor and analogy. Assignments will explore metaphorical games, games for persuasion and games for self-expression. Special emphasis is placed on the analysis of personal experiences and how they can be translated systematically into game designs that generate non-typical gameplay content. PREREQUISITE(S): GAM 226 or GAM 224
ADVANCED GAME DESIGN
This is a studio course in which students work in teams to design and develop slices of polished small-scale gameplay experiences. The focus is on developing team-based creative and technical processes to produce innovative, engaging, and playable games. Teams will iteratively design and develop two distinct gameplay experiences or "vertical slices." Each slice will demonstrate an understanding of the role of game mechanics, game art, audio, and technology platform in creating a cohesive and compelling gameplay. PREREQUISITE(S): GAM 341
GAME DEVELOPMENT I
This course provides students additional theory and practice with an emphasis on game design and storytelling for games. Students continue learning about game development processes and techniques and how to apply advanced game design principles to create components of a 2D game.
CONSOLE GAME DEVELOPMENT ENVIRONMENTS
Specialized computers for games with high-end graphics and sound capabilities and other specialized input output devices form one of the largest game markets. In this advanced programming course students will gain hands-on experience writing and porting code for game consoles. PREREQUISITE(S): CSC 393 and CSC 374.
TOPICS IN GAME PROGRAMMING
Specific topics will be selected by the instructor and will vary with each quarter. PREREQUISITE(S): See syllabus
This is an introductory course in 3D animation. It will emphasize traditional animation principles as applied to 3D animation. Topics will include: principles of animation, storyboarding, transformations and deformations of 3D objects, rigging, camera and light animation. This course has an additional fee. PREREQUISITE(S): ANI 230
REAL-TIME GRAPHICS TECHNIQUES
This course will cover the basic algorithms and techniques used in today's real-time graphics systems. Topics will include the following: an introduction to computational geometry including computation with polygonal meshes. Alternate scene representations for efficient geometry culling, including BSP trees and oct-trees. Bounding volume hierarchies, box-trees and R- trees, and application to geometry culling. Programmable graphics hardware and its applications to geometric deformations and surface rendering. PREREQUISITE(S): GPH 329
DIGITAL SOUND FOR COMPUTER GAMES
Acquisition and computer representation of sound. Sound standards. lossy and lossless compression. Synthesis and processing of acoustic signals. Acquisitions of physical acoustic signals. Microphone geometries. Introduction to Foley editing. Game specific topics include: game audio design patterns, interactive processing pipeline for digital audio, music sequencers for games, sound APIs.
MULTIPLAYER GAME DEVELOPMENT
Multiplayer games were made possible by the advances in networking technology, increases in processor speed and data storage. Today, the majority of successful game titles are equipped with a multiplayer capability. This technical course discusses the fundamental aspects of multiplayer game development such as: design techniques, architectures, client and server side implementation, databases. PREREQUISITE(S): GAM 374
An introduction to distributed systems. Topics may include: architecture of distributed systems; networking; datagram-oriented and stream-oriented protocols; network programming (for example, the sockets API); remote procedure call and remote method invocation; processes and threads; code migration; software agents; naming of non-mobile and mobile entities; cryptography and security. PREREQUISITE(S): (CSC 301 or CSC 383 or CSC 393) and CSC 374.
MOBILE APPLICATION DEVELOPMENT
In this course we introduce the core issues associated with development for mobile devices. Students will learn a platform?s IDE, frameworks, view, menus, controllers, graphics audio and more. Understanding the device's taps, touch, multi-touch, gestures, and accelerometers are just few of the interactions the class will cover. This course is design to be prerequisite for advanced mobile development classes. Every offering of the course will be explicitly targeting a specific device platform, (i.e. iPhone, Android, Windows Phone). PREREQUISITE(S): (CSC 301 or CSC 383 or CSC 393) and CSC 374
GAME DEVELOPMENT FOR MOBILE DEVICES
Mobile devices are becoming once of the most important hardware for game players. In this course we introduce major mobile hardware platforms and their operating systems. Issues related to game design for handheld devices will be presented. The strong technical component of this course includes game programming for a handheld device with a wireless internet connection enabling multiplayer game architecture. Such concepts as: building a custom game library, multiplayer game programming, infrared, wireless and socket communication between devices will be discussed. PREREQUISITE(S): CSC 301 or CSC 383 or CSC 393
GENERAL PHYSICS I
Mechanics, vibrations and fluids. Laboratory fee.
MAT 131 or above is a prerequisite for this class.
PHYSICS FOR GAME DEVELOPERS
The course concentrates on Newton's Laws of Motion, kinematics and kinetics. This theory will be applied to problems that a game programmer must understand e.g. collisions between objects, projectiles and their trajectories, real-time simulation of motion. Special objects such as cars, aircraft and ships will be discussed. Students will apply and implement laws of physics. PREREQUISITE(S): (CSC 301 or CSC 383 or CSC 393) and MAT 150
GAME USABILITY AND PLAYTESTING
The goal of game user research (GUR), which includes game usability and playtesting, is to collect unbiased game play data that willl help design/development teams make better games. There are multiple GUR methods that work best at different points in the development cycle and it is the game user researcher's job to understand how and when to effectively use them. In this course students will learn a variety of methods for evaluating games, where in the development cycle they are applied, and perform common GUR evaluations including competitive reviews, heuristic evaluations, usability tests and playtesting. PREREQUISITE(S): GAM 244
ADVANCED DATABASE CONCEPTS
An introduction to advanced selected topics in databases. Possible topics include: object-oriented databases, distributed databases, intelligent and deductive databases, temporal databases, multimedia databases, spatial and geographic databases, fuzzy databases, mobile databases, data mining and data warehousing, as well as emerging issues and concepts in database design, implementation and management. PREREQUISITE(S): IT 240.
INTRODUCTION TO LEVEL DESIGN
Level design is the art of creating believable environments, stages and missions for video games. This course explores topics including architecture, flow, pacing and puzzles. Using a 3D level editor, students will investigate technical design issues including the construction, texturing, lighting and scripting of modern game levels. The roles, duties and challenges of the level designer will also be discussed. PREREQUISITE(S): (GAM 224 or GAM 226) and GAM 245
GAME DEVELOPMENT II
This course emphasizes 3D game production. Students apply advanced 3D game design development principles to create deliverables for 3D games. Students will work with an existing game engine and content pipeline. The focus of the class will be on the creation and use of different types of content, key development issues, process management, and professional practices. PREREQUISITE(S): GAM 244
PRACTICAL SCRIPTING FOR GAMES
This workshop introduces game scripting to artists and game designers. A game script is a short list of commands that control something in a game, such as how a character moves, or an enemy's behavior. Students will learn to read, modify, and author scripts that generate and affect a variety of game elements over the course of weekly projects. PREREQUISITE(S): GAM 240 or CSC 241