Code Course Description
CMPT 1105

Introduction to Computing Science and Programming

This course introduces students to the fundamental concepts of computing science and computer programming. Students will learn the process of program design to solve real-world problems and the fundamental building blocks of a computer program. By the end of this course, students will be able to develop computer programs in a high-level computer programming language (such as Python). This course is intended for students with little or no prior programming experience.

CMPT 1109

Computer Programming I

This course provides an introduction to computing science and programming, intended for students with little or no programming background. Students will learn how to analyze problems and design algorithms as well as implement their solutions using a high-level programming language such as C++. Topics include structured programming fundamentals, control structures, procedural programming, recursion, arrays, basic sorting and searching algorithms, strings, pointers, dynamic memory allocation, files, exceptions, and an introduction to object-oriented programming.

CMPT 1209

Computer Programming II

This is a second course in computing science and programming, presented using an object-oriented perspective and intensive hands-on experience. Students will learn how to apply fundamental object-oriented concepts using a high-level programming language like C++ to efficiently program applications that have an intermediate level of difficulty. Topics include encapsulation, inheritance, aggregation, polymorphism, templates, and virtual functions. Software development lifecycle and modelling, code efficiency analysis, event-driven programming, and exception handling are also introduced in this course.

CMPT 1267

Computer Game Development I

This course introduces students to computer programming methods for game development. Students will use a hands-on approach to learn practical programming concepts for interactive game design as well as coding methods for implementing their designed games using object-oriented programming languages (such as C++). Topics include core concepts underlying computer graphics and games, designing game objects, Open Graphics Library (OpenGL), 2D and 3D graphics, audio, camera models, collision detection, and game user interface design.

CMPT 2167

Computer Game Development II

This course introduces students to the design and development of interactive computer games using modern game engines (such as Unreal Engine). Students will gain experience in game development with an emphasis on visual scripting. Topics include the game development environment, creating custom classes, adding code to visual scripting projects, asset creation, multiplayer games, game user interface design, optimization, testing, and packaging.

CMPT 2200

Designing with Raspberry Pi

This course provides the student with the necessary knowledge of the Raspberry Pi to design and develop practical applications. Initial emphasis will be placed on the embedded Linux OS, configuring, setting up and programming the Pi. In the latter part of the course, students will be able to apply that knowledge to case studies and projects.

CMPT 2276

Introduction to Software Engineering

This course provides an overview of standard paradigms and engineering practices as applied to software development. Topics include major phases incorporated in Systems Development Life Cycle (SDLC), software project management issues, and software development core activities from planning to implementation and deployment. Students will participate in a team project that employs an iterative development process and utilizes modern tools that are vital to the success of software development projects to construct a software solution to a real-world case study.

CMPT 2300

Data Structures and Algorithms

This course introduces students to data structures and algorithms, including their design, analysis and implementation. Topics include: object-oriented design and object-oriented programming with a study of inheritance, encapsulation and polymorphism, techniques for searching and sorting, time and space efficiency of algorithms, and practical data structures, including arrays, lists, stacks, queues, trees, heaps, sets, hash tables and graphs. Programs are written in C++.

CMPT 2367

Applied Project in Computing Science

This course is project based, giving students supervised practical experience in a field of study within Computing Science. Students will engage in various stages of project development from scope definition and design to implementation and deployment. Through completion of a semester-long project, students will acquire experience in activities related to applied projects, such as systems analysis and design, technical documentation, effective team collaboration, project management, testing, and quality control.

CMPT 2395

Introduction to Computer Architecture

This course introduces students to fundamental aspects of computer system architecture and low-level programming. Topics include data representations, building blocks of computers, central processing unit organization, bus structures, memory management, computer interfacing, assembly programming, and system software. Students will apply principles and concepts learned in this course to improve program efficiency and reliability. Programs will be written in C and x86-64 assembly languages.