Computer Science and Game Design Modules

Semester 3

Operating Systems I: Man-Machine Interface

CS 180

This course presents an overview of modern operating systems as implemented on personal computers. It presents an overview of what an operating system is and does, with emphasis on the following topics: organization and design, process management, threading, interprocess communication, process synchronization, and memory management.


Advanced C/C++

CS 225

This course builds on the foundation created in the first two high-level programming courses (CS120/170). It presents advanced topics of the C/C++ programming language in greater detail. Such topics include advanced pointer manipulation, utilizing multi-dimensional arrays, complex declarations, and standard library functions. Advanced C++ topics include class and function templates, operator overloading, multiple inheritance, runtime type information, the standard template library, and performance issues.


Introduction to Game Design

DES 115

This course is an introduction to game design theory and the process of designing games. Topics may include design principles, writing rules, playtesting, game state, randomness, hidden information, and game balance.


Project II

GAM 200

This project is divided into two semesters and focuses on the creation of a simple real-time game or simulation with 2D graphics (3D games are not allowed). Students work together on teams of three or four members to implement technical features, such as audio effects, music playback, pattern movement, simple artificial intelligence, same-machine multiplayer (networking is not allowed), particle systems, scrolling, and simple physics. All projects must be written with a core of C++ code and cannot use middleware such as pre-existing physics engines, networking engines, etc. Additional topics may include basic software architecture, essential development practices, fundamentals of team dynamics, and task prioritisation methods.


Calculus & Analytic Geometry II OR MAT 230 Vector Calculus II

MAT 200

This course builds on the introduction to calculus in MAT150. Topics in integration include applications of the integral in physics and geometry and techniques of integration. The course also covers sequences and series of real numbers, power series and Taylor series, and calculus of transcendental functions. Further topics may include a basic introduction to concepts in multivariable and vector calculus.

OR

This course is a continuation of MAT180. Topics covered include differential operators on vector fields, multiple integrals, line integrals, general change of variable formulas, Jacobi matrix, surface integrals, and various applications. The course also covers the theorems of Green, Gauss, and Stokes.


Semester 4

Data Structures

CS 280

This course introduces the classical abstract data types (ADT) in computer science. ADTs provide the hierarchical views of data organisation used in programming. Among the topics covered are the algorithms and primitives of the data structures for arrays, linked lists, stacks, queues, trees, hash tables, and graphs. In addition, the course provides an introduction to algorithm complexity and notation.


System Design Methods

DES 212

This course focuses on how to analyze and simulate game systems. Topics may include system analysis, system simulation, system balancing, combat systems, and economic systems.

Credit may be received for only one of: DES 212, DES 220, GAT 211.


Project II

GAM 250

In this class, students work to complete and polish the projects they began in GAM200. Additional topics may include intermediate software architecture, advanced debugging techniques, bug tracking, formal playtesting, game pacing, and game balance.


Linear Algebra

MAT 250

This course presents the mathematical foundations of linear algebra, which includes a review of basic matrix algebra and linear systems of equations as well as basics of linear transformations in Euclidean spaces, determinants, and the Gauss-Jordan Algorithm. The more substantial part of the course begins with abstract vector spaces and the study of linear independence and bases. Further topics may include orthogonality, change of basis, general theory of linear transformations, and eigenvalues and eigenvectors. Other topics may include applications to least-squares approximations and Fourier transforms, differential equations, and computer graphics.


Motion Dynamics

PHY 200

This calculus-based course presents the fundamental principles of mechanics, including kinematics, Newtonian dynamics, work and energy, momentum, and rotational motion.