​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. 

Course Requirements 

Computer Science/Software Engineering

Computer Systems

Game AI

Game Design

Game Development Studio

Game Programming

Graphics/Animation/Sound

Multiplayer Games

Mobile Games

Physics

Usability

Students must earn a grade of C- or higher in all major elective courses.

Open Electives

Open elective credit also is required to meet the minimum graduation requirement of 192 hours.

CSC 241

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.

CSC 242

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

CSC 309

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.

CSC 373

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.)

CSC 374

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

CSC 393

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

GAM 372

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

GAM 374

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

GAM 377

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

GAM 391

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

GPH 321

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

GPH 329

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)

MAT 140

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.
Prerequisites:
MAT 130 or above or equivalents or placement by test is a prerequisite for this class.

CSC 321

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.

MAT 141

DISCRETE MATHEMATICS II

Methods of direct and indirect proof, set theoretic proofs, sequences, mathematical induction, recursion, multiply-quantified statements, relations and functions, complexity.
Prerequisites:
MAT 140 is a prerequisite for this class.

CSC 355

DATABASE SYSTEMS

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

CSC 357

EXPERT SYSTEMS

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.

SE 371

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

CSC 343

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

GAM 353

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

GAM 376

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

CSC 380

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.

CSC 358

SYMBOLIC PROGRAMMING

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.

GAM 229

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

GAM 205

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

GAM 329

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

GAM 342

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

GAM 362

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

GAM 365

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

GAM 244

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.

GAM 380

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.

GAM 398

TOPICS IN GAME PROGRAMMING

Specific topics will be selected by the instructor and will vary with each quarter. PREREQUISITE(S): See syllabus

ANI 231

3D ANIMATION

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

GPH 389

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

GAM 250

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.

GAM 390

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

CSC 376

DISTRIBUTED SYSTEMS

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.

CSC 371

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

GAM 386

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

PHY 150

GENERAL PHYSICS I

Mechanics, vibrations and fluids. Laboratory fee.
Prerequisites:
MAT 131 or above is a prerequisite for this class.

GAM 350

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

GAM 312

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

CSC 353

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.

GAM 341

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

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

GAM 340

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