The representation of the following Course Requirements on a year-by-year basis is just a suggestion. Students are free to take these courses in any order they choose, provided they have mastered the course-specific prerequisites.
Game Design Concentration
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
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.
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.
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
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)
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
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