CSD1100 Computer Environment
This course provides students with a solid understanding of the fundamental elements on which computers are based. Topics covered include number systems, representation of numbers in computation, basic electricity, electric circuits, digital systems, logic circuits, data representation, digital memory, computer architecture, and operating systems. This knowledge eliminates some of the “mysteries” about hardware and provides students with a well-rounded understanding of computers. The latter stages of the course focus on assembly programming, which will enhance the student’s understanding of how the computer works at a fairly low-level.
Students will spend time reading extensively and generating ideas for writing, as well as sharing and analyzing their writing and ideas, revising their ideas, and learning more about themselves as a result. Furthermore, this course encourages students to utilize reading and writing as tools to explore and discover their thought processes, beliefs, and world concepts. It also motivates them to employ reading and writing as tools to develop critical thinking skills. It is believed that in the process of using these tools to organize their ideas and develop their critical thinking skills, they will be able to express these ideas into various compositional styles and forms and in the process become critical, intelligent thinkers, readers and writers.
CSD1240 Linear Algebra and Geometry
The two main themes throughout the course are vector geometry and linear transformations. Topics from vector geometry include vector arithmetic, dot product, cross product, and representations of linesand planes in three-space. Linear transformations covered include rotations, reflections, shears and projections. Students study the matrix representations of linear transformations along with their derivations. The curriculum also presents affine geometry and affine transformations along with connections to computer graphics. This course also includes a review of relevant algebra and trigonometry concepts.
CSD1120 High-level Programming 1
In presenting the C programming language, this course serves as a foundation for all high-level programming courses and projects. It provides the fundamentals in programming, including control-flows (such as statement grouping, decision making, case selection, procedure iteration, and termination test) and basic data types (such as arrays, structures, and pointers). Additionally, there will be an intensive discussion of the lexical, syntax notation, and semantics of the C programming language.
CSD1400 Software Engineering Project 1
This class presents an overview of the way the game development industry works and a history of game development. It will expose students to the positions and job responsibilities that each member of a game development team has, along with the industry requirements for concept pitches, design documents and schedules. It will also introduce sprite animation, object motion, and input processing, which students will use in the creation of a game of their own design.
CSD1250 Calculus and Analytic Geometry 1
This course introduces the calculus of functions of a single real variable. The main topics include limits, differentiation, and integration. Limits include the graphical and intuitive computation of limits, algebraic properties of limits, and continuity of functions. Differentiation topics include techniques of differentiation, optimization, and applications to graphing. Integration includes Riemann sums, the definite integral, anti-derivatives, and the Fundamental Theorem of Calculus.
CSD1170 High-level Programming 2
1. Understand the differences between imperative programming as practised in CSD1120 and object-oriented programming. 2. Understand concepts of data abstraction, inheritance, and polymorphism. 3. Understand the concept of interface versus implementation. 4. Understand the challenges of building large-scale programs and how object-oriented programming facilitates it. 5. Understand the Standard C++ and Standard Template libraries and how to use them effectively in solving problems. 6. Apply course concepts to implement data structures and programs to solve various problems. 7. The successful student will be prepared for the next programming course in the sequence (CSD2125). 8. The successful student will be able to use the C++ language in the second year game courses.
CSD1130 Game Implementation Techniques
Game Implementation Techniques presents foundational data structures, algorithms, mathematical concepts and techniques used in the design and development of two-dimensional real-time interactive simulation and game software. Topics covered include event-driven programming, game engine design and architecture, real-time rendering, user interaction, state-machines, animation techniques and collision detection.
CSD1650 Interpersonal and Work Communication
Students explore how their culture, gender, economic status, age and other personal characteristics influence their workplace communication. The course explores verbal and non-verbal communication skills in a global work environment. Students learn written communication techniques most effective for use in the technology workplace. Additionally, students explore and practice negotiation skills, both internally and externally at their workplace.
CSD1450 Software Engineering Project 2
This project focuses on the creation of a simple game or simulation. Students will work together on teams of three or four members. All projects must be written entirely in C (C++ is also allowed) and cannot use external libraries or middleware of any kind (except those provided by the instructor). Topics include effective team communication, planning, documentation, debugging, source control, testing, and iterative software development techniques.