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 enroll 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: A minimum grade of C- in CMPT 101 or ENCP 100 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. Analysis of algorithm time and space using standard notation is introduced. Unit testing is also introduced.
Prerequisites: A 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 grades of C- in CMPT 200 and MATH 114 and one of CMPT 272 or MATH 200 (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. Note: Students who have received credit in DESN 240 or DESN 242 will not receive credit for CMPT 250.
Prerequisites: A minimum grade of C- in CMPT 101 or CMPT 103.
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: A 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 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 ethical frameworks; data collection and use; privacy and security; intellectual property; artificial intelligence and automation; 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: A minimum grade of C- in CMPT 200, or a current student in the Cybersecurity Studies Minor with a minimum grade of C- in CYCS 200.
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 312
Introduction to Robotics: Programming and Control
3 Credits Weekly (3-3-0)
This project based course offers an introduction to the basic concepts in robotics and the various algorithms used for perception, locomotion, and pathway planning. Students will get hands on experience with programming micro-controllers and building hardware and will apply concepts learned through interdisciplinary projects.
Prerequisite: A minimum grade of C- in CMPT 200.
CMPT 315
Web Application Development
3 Credits Weekly (3-3-0)
This course introduces various technologies in web programming. It requires students to work 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, testing and deployment.
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-2-0)
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 packages currently available.
Prerequisites: Minimum grades of C- in CMPT 201, MATH 114, and one of MATH 120 or MATH 125.
CMPT 351
Introduction to Data Visualization
3 Credits Weekly (3-2-0)
This course introduces techniques and tools for creating effective visualizations based on principles from visual design, perceptual psychology, and cognitive science. The goal of this course is to expose students to visual representation methods and techniques that increase the understandability of complex and varied data.
Prerequisites: Minimum grades of C- in CMPT 250 and STAT 151.
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, propositional logic, and learning and cognitive models. Instructors may choose to augment the course by presenting expert systems and shells, natural language processing, computer vision or robotics. Some of the AI techniques will be implemented using both procedural and non-procedural languages.
Prerequisites: Minimum grades of C- in CMPT 201 and one of CMPT 272 or MATH 200.
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 the foundations of computer graphics. Topics covered include 2D and 3D transformations, interactive 3D graphics programming, shading and lighting models, geometric modelling, computer graphics rendering including ray tracing and texture mapping. There will be an emphasis on both the mathematical and geometric aspects of graphics, as well as the ability to write complete 3D graphics programs.
Prerequisites: Minimum grades of C- in CMPT 201, MATH 114, and in either MATH 120 or 125.
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 relevant to system security . Topics include: host and application threats and hardening, storage security, virtualization, secure software development, web security, risk analysis and ethics.
Prerequisites: Minimum grades of C- in CMPT 280 and CMPT 360.
CMPT 381
Cryptology from Classical to Post-Quantum
3 Credits Weekly (3-3-0)
Cryptographic algorithms are used to ensure the privacy and integrity of data, secure communications, and protect and even supplant currency altogether. However, their utility and ubiquity were recently threatened by developments in quantum computing, necessitating a near future shift to more sophisticated, quantum-resistant algorithms. In this course, students will study the evolution of cryptology, covering the essentials of classical and contemporary symmetric and asymmetric encryption and decryption algorithms in their many forms and applications. In addition, students will study the implications of quantum attacks and explore at least one newly certified quantum-resistant algorithm. The focus of the course will balance practical implementations of naturally theoretical and mathematical concepts.
Prerequisites: Minimum grades of C- in CMPT 200 and one of MATH 120 or MATH 125.
CMPT 391
Database Management Systems
3 Credits Weekly (3-2-0)
This is the second course in database management systems. Topics include database design, normalization theory, transaction management, query processing, and query optimization, building and supporting secure applications. Database support for special data types such as XML documents is considered. Support for complex applications, data analysis and information retrieval is also covered.
Prerequisites: A minimum grade of C- in CMPT 291.
CMPT 395
Introduction to Software Engineering
3 Credits Weekly (3-2-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: A 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.
Prerequisites: 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 grades of C- in 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 455
Introduction to Machine Learning
3 Credits Weekly (3-3-0)
Machine learning (ML) is the science of making computers perform tasks without being explicitly programmed. There is a multitude of real-world applications of ML (e.g. speech recognition, advanced web search and information retrieval, self-driven cars). ML is used in almost any computer application without even knowing it. This class teaches the most effective machine learning techniques, along with practical skills to implement and adapt them to new problems.
Prerequisites: Minimum grades of C- in either CMPT 340 and STAT 151, or MATH 335 and CMPT 200.
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 470
Introduction to Computer Vision
3 Credits Weekly (3-3-0)
Computer vision is a research field aimed to enable computers to process and interpret visual data, as sighted humans can. It is one of the most exciting areas of research in computing science and among the fastest growing technologies in today’s industry. This course provides an introduction to the fundamental principles and applications of computer vision. Topics include feature detection and tracking, image matching and alignment, geometric relationships between 2D images and the 3D world, and some machine learning methods for computer vision.
Prerequisites: Minimum grades of C- in either CMPT 340 and STAT 151, or MATH 335 and CMPT 200.
CMPT 480
Computer Network Security
3 Credits Weekly (3-3-0)
Students are introduced to the principles and practice of computer network security and get hands-on experience with relevant tools used by security professionals. Students also write code to illustrate vulnerabilities and attacks relevant to network security. Topics include network threats, hardening and monitoring, internet service hardening and network intrusion prevention and detection.
Prerequisites: Minimum grades of C- in CMPT 280 and CMPT 361.
CMPT 491
Datamining and Advanced Database Topics
3 Credits Weekly (3-3-0)
This course on data mining introduces the concepts, algorithms, techniques, and systems of data warehousing. Topics include what data mining is, data preprocessing, integration, and transformation. The design and implementation of data warehouse and OLAP systems, mining frequent patterns and association (basic concepts and advanced methods), and classification, clustering and outlier analysis are covered.
Prerequisites: Minimum grades of C- in STAT 151, 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 497
Computer Science Internship
3 Credits Total (45-0-90)
This course provides students with practical experience in a work environment. Students engage in work integrated learning through employment or internship in industry. Students learn in practice the professional aspects (work and ethics) of a computer scientist. At the end of the placement, students provide a presentation to demonstrate the learning accomplished. The contact hours are a minimum of 90 hours but can involve more depending on the placement. This course may be taken two times for credit. All placements require departmental approval.
Prerequisites: A 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.