Although students are free to take course requirements in any order they choose, provided they have mastered the course-specific prerequisites , it is strongly recommended that students follow these year-by-year suggestions, especially regarding the first-year major courses. 

Game Design Concentration

First Year

Second Year

Third Year

Fourth Year

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

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

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)

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

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