Academic Calendar

CMPT – Computer Science

CMPT 101
Introduction to Computing I
3 Credits          Weekly (3-3-0)

This course provides a breadth-first introductory treatment of concepts in computing science for students with little or no programming background. Topics include data representation and machine architecture; algorithms and their properties; the control constructs of sequence, selection, and repetition; functions; and the notions of data type and operations on data types in low-level and high-level programming languages. Students do introductory programming for a portion of the course. Note: Students with no previous computing experience should enrol in CMPT 101 instead of CMPT 103. Credit cannot be obtained for CMPT 101 if credit has already been granted for CMPT 103.

CMPT 103
Introduction to Computing II
3 Credits          Weekly (3-3-0)

This course continues the overview of computing science concepts that was started in CMPT 101. Topics include representation of compound data using abstraction, programming languages, and modularity; algorithms that use these data structures; and networks with the TCP/IP model and client/server architecture. Students continue with the syntax of a high-level programming language: functions, arrays, and user-defined data types.

Prerequisites: Minimum grade of C- in CMPT 101 or three credits of intermediate CSE including CSE 2120.

CMPT 104
Fluency with Information Technology
3 Credits          Weekly (3-0-0)

This course introduces fundamental computational concepts.  While some specific productivity software is covered, this is not a computer literacy course.  The emphasis is on the concepts that underlie today's information infrastructure.  Topics include abstraction, data representation and analysis, algorithms and algorithmic thinking, the Internet, and security.

CMPT 200
Data Structures and Algorithms
3 Credits          Weekly (3-3-0)

This course continues the study of dynamic data structures (e.g., lists, stacks, queues, trees, and dictionaries) and associated algorithms (e.g., traversal, sorting, searching, element addition and removal). Recursion is covered, and some of the basic ideas of object-oriented programming, such as classes and objects, are introduced.

Prerequisites: Minimum grade of C- in CMPT 103.

CMPT 201
Practical Programming Methodology
3 Credits          Weekly (3-3-0)

This course provides an introduction to the principles, methods, tools, and practices of the professional programmer. The lectures focus on best practices in software development and the fundamental principles of software engineering. The laboratories offer an intensive apprenticeship to the aspiring software developer. Students use C and the software development tools of the UNIX environment.

Prerequisites: Minimum grade of C- in CMPT 200.

CMPT 204
Algorithms I
3 Credits          Weekly (3-0-1)

This is a first course on algorithm design and analysis with an emphasis on fundamentals of searching, sorting and graph algorithms. Examples of methodologies considered include divide and conquer, dynamic programming, and greedy methods, together with analysis techniques to estimate program efficiency.

Prerequisites: Minimum grade of C- in CMPT 200 and CMPT 272 or MATH 200 and MATH 113 or MATH 114 (Note: CMPT 272 is preferred to MATH 200).

CMPT 220
Unix, Scripting, and Other Tools
3 Credits          Weekly (3-2-0)

The student is introduced to a Unix-like operating system along with some of its important design features, such as processes, pipes, and the I/O model. Some of the basic tools and methodologies are discussed, including shell scripts, editors, and standard utilities. Various open source tools are surveyed.

Prerequisites: Minimum grade of C- in CMPT 200.

CMPT 229
Computer Organization and Architecture
3 Credits          Weekly (3-3-0)

This course provides a general introduction to number representation, the architecture and organization concepts of von Neumann machines, assembly level programming, exception handling, peripheral programming, floating point computations, and memory management.

Prerequisites: Minimum grade of C- in CMPT 200.

CMPT 230
Introduction to Computer Games
3 Credits          Weekly (3-0-0)

This course is an introduction to various aspects of computer game design and marketing. It focuses on the history of computer games, computer game markets, evaluation of computer games, creation and testing of interactive narratives, and game interface design. The course includes a final capstone design for an interactive (narrative) game. Note: This course has a significant writing component; students are advised to take ENGL 102 (or equivalent) prior to taking this course.

Prerequisites: Minimum grade of C- in any CMPT or ENGL course or in either PSYC 104 or PSYC 105.

CMPT 250
Introduction to Human Computer Interaction
3 Credits          Weekly (3-2-0)

This course introduces students to the basic components of the interaction design process. Effective user interaction design emphasizes the importance of good interfaces and the relationship of user interface design to human-computer interaction (HCI). The concept of interaction is introduced with a focus on the centrality of the user in HCI. Other topics include interface and interaction types, data gathering and analysis to understand and solve the design problem; design requirements, prototyping and usability testing. The lab allows the students to apply the concepts, tools and methods, discussed in lecture, towards the major course project. Note: In addition to the prerequisite, it is recommended that students taking this course have completed an additional computing science course or an introductory course in psychology, sociology, or anthropology.

Prerequisites: Minimum grade of C- in CMPT 101 or CMPT 103 or CMPT 114.

CMPT 272
Formal Systems and Logic in Computing Science
3 Credits          Weekly (3-2-1)

This course provides an introduction to the tools of set theory, logic, and induction, and their use in the practice of reasoning about algorithms and programs. Topics include basic set theory, the notion of a function, counting, propositional and predicate logic and their proof systems, and inductive definitions and proofs by induction.

Prerequisites: A minimum grade of C- in CMPT 101 or CMPT 103 or CMPT 200 and a minimum grade of C- in MATH 114 and C- in MATH 120 or MATH 125.

CMPT 280
Introduction to Computer Security
3 Credits          Weekly (3-1-0)

Students are introduced to computer and network security and the underlying concepts of confidentiality, integrity, and availability.  Topics include common cyberattacks, identifying vulnerabilities and defending against attacks, and approaches to creating secure systems.  Students also work with some of the tools available to security administrators.

Prerequisites: Minimum grade of C- in CMPT 200.

CMPT 291
Introduction to File and Database Management
3 Credits          Weekly (3-3-0)

The course covers basic concepts in computer data organization and information processing, the entity-relationship model, the relational model, SQL, and other relational query languages.  Other topics include storage architecture, physical organization of data, and access methods for relational data.

Prerequisites: A minimum grade of C- in CMPT 200.

CMPT 305
Introduction to Object-Oriented Programming
3 Credits          Weekly (3-3-0)

In this course, students study the object-oriented programming (OOP) paradigm. The components of object-oriented programming are encapsulation, inheritance, and polymorphism. Students use some of the well established design patterns that recur in many non-trivial software systems. The last component of this course is event-driven programming. Note: Credit in CMPT 250 is recommended but not required.

Prerequisites: Minimum grade of C- in CMPT 200.

CMPT 306
Non-Procedural Programming Languages
3 Credits          Weekly (3-3-0)

This course examines various programming languages other than the standard third generation languages such as C++ and Java. This course considers a functional language (Lisp) and a logic language (Prolog). The underlying theories of lambda calculus (Lisp) and predicate logic (Prolog) are also studied. A limited number of applications to Artificial Intelligence are considered for both languages. This course also may examine additional interpreted languages.

Prerequisites: Minimum grade of C- in CMPT 200 and CMPT 272.

CMPT 310
Computers and Society
3 Credits          Weekly (3-0-0)

This hybrid course explores the social, legal and ethical issues arising in the wake of computer technology, especially those concerning self, community, environment, education, work and democracy. Topics include cyberethics; freedom and information; privacy and security; intellectual property; information technology and the future; social responsibility. Note: This is a third year course. It is recommended that students taking this course have at least 48 earned credits in their program of study.

Prerequisites: Minimum grade of C- in any 200-level course.

CMPT 311
Phenomenon of Technology
3 Credits          Weekly (3-0-0)

This hybrid course explores the role and significance of technology in our daily lives through a variety of theoretical and research frameworks and methods, including media ecology, phenomenology, STS (science, technology and society) studies, and human-computer interaction research.

Prerequisites: Minimum grade of C- in any 200-level course (Note: this is a third year course, It is recommended that students taking this course have at least 48 credits in their program of study).

CMPT 315
Web Application Development
3 Credits          Weekly (3-3-0)

This course introduces various technologies in web programming. It requires students to work both individually and collaboratively to design and develop interactive web-based applications. Students learn both client- and server-side programming, database programming, and basic security concepts and testing.

Prerequisites: Minimum grade of C- in CMPT 291 and CMPT 305.

CMPT 330
Introduction to Real Time Gaming
3 Credits          Weekly (3-3-0)

This course introduces the basic concepts of 2D and 3D game writing. Students learn to handle sprite animation, collision detection, and simple game artificial intelligence, and gain an understanding of the basics of 2D and 3D display at the level of the game engine. During this course, students design and implement an effective user interface for a game using a game engine as well as create several very small games. The course culminates with a team-based major game project.

Prerequisites: Minimum grade of C- in CMPT 230 and CMPT 305.

CMPT 340
Introduction to Numerical Methods
3 Credits          Weekly (3-3-1)

This course provides an overview of computational methods for solving problems in linear algebra, non-linear equations, interpolation and approximation, and integration. Computer arithmetic and errors are discussed. The aim is to teach students the proper use of mathematical subroutine packages currently available in computer libraries.

Prerequisites: Minimum grade of C- in CMPT 200, MATH 120 and MATH 214.

CMPT 351
Human Computer Interaction: Usability
3 Credits          Weekly (3-3-0)

This course extends the theory and practice of usability introduced in CMPT 250 with a focus on the formal evaluation of user interfaces. Usability methodologies are applied to the practice of evaluating systems such as web sites, software applications, mobile technologies, or any user-operated device.

Prerequisites: Minimum grade of C+ in CMPT 250.

CMPT 355
Introduction to Artificial Intelligence
3 Credits          Weekly (3-3-0)

This course provides an introduction to Artificial Intelligence (AI). AI is the study of how human intelligence can be imitated by computer programs. The course presents a survey of the concepts and applications of AI - such as: intelligent agents, knowledge representation, state-space search, expert systems and shells, natural language processing, propositional logic, learning and cognitive models. Some of the AI techniques will be implemented using both procedural and non-procedural languages (Prolog and LISP). Note: Students should be able to program in a high level programming language that allows explicit access to the underlying memory model. C and C++ are acceptable languages.

Prerequisites: Minimum grade of C- in CMPT 201 and CMPT 272.

CMPT 360
Introduction to Operating Systems
3 Credits          Weekly (3-3-0)

This course introduces the fundamentals of operating systems. Topics include scheduling, memory management, concurrency, security and protection, device management, and file systems. The laboratory component involves both the investigation of these concepts in current operating systems as well as their design and implementation.

Prerequisites: Minimum grade of C- in CMPT 201.

CMPT 361
Introduction to Networks
3 Credits          Weekly (3-3-0)

This course introduces the basics of networking with a focus on computer networks. Topics include network architectures, protocols, client-server programming, security, and network management. A selection of material from data compression and decompression and multimedia data technologies are also discussed.

Prerequisites: Minimum grade of C- in CMPT 201.

CMPT 370
Introduction to Computer Graphics
3 Credits          Weekly (3-3-0)

This course introduces students to many important principles and techniques that are useful for creating 2D and 3D computer graphics applications. This course provides students with sufficient background to write substantial computer graphics applications. Topics include coordinate systems, homogeneous transformations (rotating, translating, scaling), viewing, object modeling, texture mapped rendering, illumination, ray-tracing, hidden line and surface elimination. Other topics are camera control, collision detection and animation. Note: It is recommended that students have MATH 120 or MATH 125.

Prerequisites: Minimum grade of C- in CMPT 201.

CMPT 380
Computer Systems Security
3 Credits          Weekly (3-3-0)

Students are introduced to the principles and practice of computer systems security and get hands on experience with relevant tools used by security professionals. Students also write programs to illustrate vulnerabilities and attacks such as: buffer overflow, SQL injection, cross site scripting and cross site request forgery. Topics include: host and application threats and hardening, storage security, virtualization, secure software development and web and mobile security.

Prerequisites: A minimum grade of C- in CMPT 280 and CMPT 360.

CMPT 391
Database Management Systems
3 Credits          Weekly (3-3-0)

This is the second course in database management systems. Topics include database design, normalization theory, transaction management, query processing, and query optimization. Database support for special data types such as multimedia, spatial data, and XML documents is considered. Support for complex applications and data analysis is also covered.

Prerequisites: Minimum grade of C- in CMPT 291.

CMPT 395
Introduction to Software Engineering
3 Credits          Weekly (3-3-0)

This course is an introduction to the fundamental concepts of software engineering. Topics include software design and analysis, software process, requirements, design patterns and testing. Team management is considered in both the lecture and in the laboratory through the use of team projects.

Prerequisites: Minimum grade of C- in CMPT 201.

CMPT 398
Independent Study
3 Credits          Total (0-0-45)

This course permits an intermediate-level student to work with an instructor to explore a specific topic in depth through research or directed reading in primary and secondary sources. The student plans, executes and reports the results of their independent research or study project under the direction of a faculty supervisor. To be granted enrolment in the course, the student must have made prior arrangements with a faculty member willing to supervise the student’s project.

CMPT 399
Topics in Computer Science
3 Credits          Weekly (3-3-0)

In this course, students examine one or two topics in computer science. Topics will vary from year to year, but will typically build upon material students will have seen in the second year of their studies. Consultation with the department is required prior to registration. Note: This course may be taken multiple times for credit.

Prerequisite: Consent of the department.

CMPT 430
3D Game Development and Artificial Intelligence
3 Credits          Weekly (3-3-0)

Modern game engines provide basic components such as animation and physics but to create a good game, the developer needs to provide functionality beyond the basics. This course will focus non-basic features such as camera control and game search/tracking heuristics. For the major project students will develop a portion of a game level using an existing commercial game engine. Note: CMPT 370 is recommended.

Prerequisites: Minimum grade of C- in both CMPT 330 and CMPT 395.

CMPT 450
Information Visualization
3 Credits          Weekly (3-3-0)

This course continues the examination of human-computer interaction (HCI) that was begun in CMPT 250, but with the emphasis moving to the design and implementation of interactive visualization systems. Topics include design principles in information visualization, abstraction of data and user tasks, visual encoding, interaction techniques, and visualization toolkits.

Prerequisites: Minimum grade of C- in CMPT 250 and CMPT 305.

CMPT 464
Wireless Networks and Embedded Systems
3 Credits          Weekly (3-3-0)

This course introduces selected topics in embedded systems and wireless networks. Topics include an introduction to embedded systems with an emphasis on microcontrollers, techniques for programming embedded systems, design for low-power applications, the basics of radio communication, and protocols for both medium access control and routing within static and mobile environments. The laboratory is oriented toward the design and implementation of lecture topics using wireless sensor network hardware.

Prerequisites: Minimum grade of C- in CMPT 395 and C in CMPT 201.

CMPT 480
Computer Network Security
3 Credits          Weekly (3-0-1)

Students are introduced to the principles and practice of computer networks security and get hand on experience with relevant tools used by security professionals. Students also write programs to illustrate vulnerabilities and attacks such as: packet spoofing, ARP poisoning and DNS cache poisoning. Topics include network threats, hardening and monitoring, internet service hardening and intrusion prevention and detection.

Prerequisites: A minimum grade of C- in CMPT 280 and CMPT 361.

CMPT 491
Datamining and Advanced Database Topics
3 Credits          Weekly (3-3-0)

In this course students will learn different topics in databases such as stored procedures and triggers, databases security, optimizing databases and queries. It also covers basic data mining intelligent tools such as association rules, classifications, clustering, and data warehousing. Information retrieval concepts are also included in this course.

Prerequisites: Minimum grade of C- in CMPT 291 and in a 300-level CMPT course.

CMPT 496
Final Project
3 Credits          Total (0-0-60)

In this course, students plan, conduct, and communicate the results of an independent project in Computer Science under the direction of a faculty supervisor. The project can be undertaken by an individual student or, if the scope warrants, by a team of students. Registration is contingent on the student(s) having made prior arrangements with a faculty member willing to supervise the project. Note: This course is intended for students in the final year of their degree. This course may be taken twice for credit.

Prerequisites: Minimum grade of C- in CMPT 395 and consent of the department.

CMPT 498
Advanced Independent Study
3 Credits          Total (0-0-45)

This course permits a senior-level student to work with an instructor to explore a specific topic in depth through research or directed reading in primary and secondary sources. The student plans, executes and reports the results of their independent research or study project under the direction of a faculty supervisor. To be granted enrolment in the course, the student must have made prior arrangements with a faculty member willing to supervise the student’s project.

CMPT 499
Topics in Computer Science
3 Credits          Weekly (3-0-0)

In this course, students examine a topic of specialization in computer science. Topics will vary from year to year. Consultation with the department is required prior to registration. Note: This course may be taken multiple times for credit.

Prerequisites: Consent of the department.