Computing Science & Information Systems

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 1110

C++ Programming

This course provides the student with knowledge of program design and programming methodologies. Emphasis is placed on the analysis of problems, the design of algorithms, and the abstraction of control and data in computer implementations of the design. Initially structured programming top-down design and procedural programming is used followed by object-oriented design (OOD) and object oriented programming (OOP). C++ is used as the implementation language.

Note: CISY 1275 and CMPT 1110 will be treated as equivalent.

CMPT 1150

Introduction to Digital Circuits and Assembly Programming

This course introduces the theory and practice of digital circuit design, computer architecture, and assembly language programming. Topics include number representation, Boolean algebra, expression minimization using mapping techniques, asynchronous and synchronous circuits, flip-flops, memories, arithmetic logic units, controllers, and interfacing to computers. Designs are implemented using a commercial software product. Assembly language for one or more microprocessors/microcontrollers such as the 80x86, 68HC11, or the MicroChip PICMicro is introduced, including register transfer, branching, subroutines, and interfacing.

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

Computer Systems Design and Architecture

This course introduces computer systems design and architecture. It begins with a review of the main digital circuit building blocks in a computer, the basic structure of a single bus computer, assembly language, and addressing modes. These concepts are formally extended by considering various architectures such as RISC and CISC and the relationship between the machine language and the architecture. Processor design in the context of pipelining, horizontal and vertical microprogramming, the ALU, and the memory is considered in depth.

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