Search
Effective: 2026-09-01 CMPUT 361 - Introduction to Information Retrieval
Introduction to information retrieval focusing on algorithms and data structures for organizing and searching through large collections of documents, and techniques for evaluating the quality of search results. Topics include boolean retrieval, keyword and phrase queries, ranking, index optimization, practical machine-learning algorithms for text, and optimizations used by Web search engines. Prerequisites: CMPUT 201 and CMPUT 204, or CMPUT 275. One of MATH 102, 125, 126, or 127 is strongly recommended.
This course provides an introduction to reinforcement learning, which focuses on the study and design of learning agents that interact with a complex, uncertain world to achieve a goal. The course will cover multi- armed bandits, Markov decision processes, reinforcement learning, planning, and function approximation (online supervised learning). The course will take an information-processing approach to the study of intelligence and briefly touch on perspectives from psychology, neuroscience, and philosophy. The course will use the University of Alberta MOOC on Reinforcement Learning. Any student who understands the material in this course will understand the foundations of much of modern probabilistic artificial intelligence (AI) and be prepared to take more advanced courses, or to apply AI tools and ideas to real-world problems. Prerequisites: CMPUT 175 or 275; one of CMPUT 267, 466, or STAT 265.
This course provides an introduction to search and planning in artificial intelligence. The course covers deterministic single-agent and multi-agent problems. Students will learn how to model real-world problems as state-space search problems and how to solve such problems. The course covers algorithms for solving deterministic shortest path problems with factored and non-factored states, combinatorial optimization problems, constraint satisfaction problems, and multi- agent problems. Prerequisites: CMPUT 204 or 275, and CMPUT 272.
Introduction to the structure, components, and concepts behind modern general-purpose operating systems. Processes: process state transitions; operations on processes; interrupt processing; multiprocessor considerations; resource allocation; synchronization; critical sections and events; semaphores; deadlock: avoidance, detection, and recovery; memory management; virtual memory; paging and segmentation; page replacement strategies; working sets; demand paging; process scheduling; scheduling algorithms; file system functions; file organization; space allocation; virtual machines. Prerequisites: CMPUT 201 and 204, or 275; one of CMPUT 229, E E 380 or ECE 212.
Graphics processing units (GPU) can be programmed like a coprocessor to solve non-graphics problems, including voice recognition, computational physics, convolutional neural networks, and machine learning. The many processing cores of a GPU support a high-degree of parallelism. Course topics include hardware architecture, algorithmic design, programming languages (e.g., CUDA, OpenCL), and principles of programming for GPUs for high performance. Prerequisites: CMPUT 201 or 275, and one of CMPUT 229, E E 380, or ECE 212.
This course covers the implementation of RDBMSs and some non- relational data models, along with their query languages. Topics: compilation, execution, and optimization of SQL queries; concurrent execution of transactions; indexing; advanced constructs in SQL; semi-structured data models and query languages; distributed and parallel databases; NoSQL and cloud-based database systems. Prerequisites: CMPUT 201 and 204, or 275; and CMPUT 291.
Effective: 2026-09-01 CMPUT 393 - Scalable Data-Intensive Analytics
Introduction to scalable computing paradigms suitable for data-intensive analytics, with a focus on abstractions, algorithms, and infrastructure for scaling data science, machine learning, and data engineering tasks using multiple machines. The concepts will be applied through a substantial, practical project involving collecting, manipulating, and analyzing large datasets, and discussing findings through scientific reports. Prerequisites: CMPUT 200, 201, 204, and 291, and one of CMPUT 191 or 195.
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 396 - Topics in Computing Science
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 396A - Topics in Computing Science
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 396B - Topics in Computing Science
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 397 - Topics in Computing Science
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 397A - Topics in Computing Science
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 397B - Topics in Computing Science
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 398 - Topics in Computing Science
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 398A - Topics in Computing Science
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 398B - Topics in Computing Science
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for a one on one individual study course between a student and an instructor. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 399 - Topics in Computing Science
This topics course is designed for a one on one individual study course between a student and an instructor. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for a one on one individual study course between a student and an instructor. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 399A - Topics in Computing Science
This topics course is designed for a one on one individual study course between a student and an instructor. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for a one on one individual study course between a student and an instructor. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 399B - Topics in Computing Science
This topics course is designed for a one on one individual study course between a student and an instructor. Prerequisites for each section may differ and are defined by the instructor in the course outline.
All phases of software development are reviewed from a process perspective. Best practices in software project and product development and management are introduced. Architectural and technological impacts on management. Group projects require specification and initial design or redesign of a software system. Prerequisite: CMPUT 301.
Effective: 2026-09-01 CMPUT 401 - Software Process and Product Management
All phases of software development are reviewed from a process perspective. Best practices in software project and product development and management are introduced. Architectural and technological impacts on management. Group projects require specification and initial design or redesign of a software system. Prerequisite: CMPUT 301. Credit may be obtained in only one of CMPUT 401, BTM 419, or MIS 419.
Effective: 2026-09-01 CMPUT 401 - Software Process and Product Management
All phases of software development are reviewed from a process perspective. Best practices in software project and product development and management are introduced. Architectural and technological impacts on management. Group projects require specification and initial design or redesign of a software system. Prerequisite: CMPUT 301. Credit may be obtained in only one of CMPUT 401, BTM 419, or MIS 419.
Software quality issues are covered. Various types of software testing, ranging from unit testing to integration testing are discussed. Processes to ensure quality, such as reviews and continuous integration, are introduced. State-of-the-art software quality tools that analyze different artifacts within the software lifecycle are described. Prerequisite: CMPUT 301.
Effective: 2026-05-01 CMPUT 402A - Software Quality
View Available ClassesSoftware quality issues are covered. Various types of software testing, ranging from unit testing to integration testing are discussed. Processes to ensure quality, such as reviews and continuous integration, are introduced. State-of-the-art software quality tools that analyze different artifacts within the software lifecycle are described. Prerequisite: CMPUT 301.
Effective: 2026-05-01 CMPUT 402B - Software Quality
View Available ClassesSoftware quality issues are covered. Various types of software testing, ranging from unit testing to integration testing are discussed. Processes to ensure quality, such as reviews and continuous integration, are introduced. State-of-the-art software quality tools that analyze different artifacts within the software lifecycle are described. Prerequisite: CMPUT 301.
This course is focused on algorithmic problems that can be solved within at most several hours by well-prepared people, where a solution involves properly understanding a written description, designing an efficient algorithm to solve the problem, and then correctly implementing the solution. Students will use algorithms, data structures, and mathematical reasoning to solve problems. Lectures are shared with CMPUT 303. CMPUT 403 covers additional material relevant to advanced programming contests. Credit cannot be obtained for both CMPUT 303 and CMPUT 403. Prerequisites: CMPUT 201 or 275, and 204, and any 300-level Computing Science course.
Introduction to modern web architecture, from user-facing applications to machine-facing web-services. Topics include: the evolution of the Internet, relevant technologies and protocols, the architecture of modern web-based information systems, web data exchange and serialization, and service-oriented middleware. Prerequisites: CMPUT 291 and 301.
Introduction to modern web architecture, from user-facing applications to machine-facing web-services. Topics include: the evolution of the Internet, relevant technologies and protocols, the architecture of modern web-based information systems, web data exchange and serialization, and service-oriented middleware. Prerequisites: CMPUT 291 and 301.
Introduction to modern web architecture, from user-facing applications to machine-facing web-services. Topics include: the evolution of the Internet, relevant technologies and protocols, the architecture of modern web-based information systems, web data exchange and serialization, and service-oriented middleware. Prerequisites: CMPUT 291 and 301.
2D and 3D transformation; 3D modeling and viewing; illumination models and shading methods; texture mapping; ray tracing. Prerequisites: CMPUT 204 or 275, 301; one of CMPUT 340, 418 or equivalent knowledge, and MATH 214.
Effective: 2026-09-01 CMPUT 411 - Introduction to Computer Graphics
2D and 3D transformation; 3D modeling and viewing; illumination models and shading methods; texture mapping; ray tracing. Prerequisites: CMPUT 204 or CMPUT 275; and CMPUT 340.
A project-based course dealing with the design and implementation of mobile robots to accomplish specific tasks. Students work in groups and are introduced to concepts in sensor technologies, sensor data processing, motion control based on feedback and real-time programming. Prerequisites: CMPUT 201 and 204, or 275; one of CMPUT 340, 418 or equivalent knowledge; MATH 214.
Effective: 2026-09-01 CMPUT 412 - Experimental Mobile Robotics
A project-based course dealing with the design and implementation of mobile robots to accomplish specific tasks. Students work in groups and are introduced to concepts in sensor technologies, sensor data processing, motion control based on feedback and real-time programming. Prerequisites: CMPUT 201 and CMPUT 204, or CMPUT 275; and CMPUT 340.
Introduction to basic principles and algorithms used in multimedia systems. Students obtain hands-on experience in issues relating to multimedia data representation, compression, processing, and animation. Topics will be selected from image and video coding and transmission, animation, human perceptual issues associated to multimedia technologies. Prerequisites: one of CMPUT 307, 328, or 411.
Compilers, interpreters, lexical analysis, syntax analysis, syntax- directed translation, symbol tables, type checking, flow analysis, code generation, code optimization. Prerequisites: one of CMPUT 229, E E 380, or ECE 212, and any 300-level Computing Science course.
Introduction to the main concepts of program analysis such as intermediate representations, inter-procedural and intra-procedural analysis techniques, call graphs, pointer analysis, and analysis frameworks. The course will also include relevant research papers that introduce both classical and state-of-the-art research in the field. The course will give an overview of the program analyses that work and those that do not work in practice and how to design program analyses for modern software systems. Prerequisites: CMPUT 201 or 275, and CMPUT 272. Knowledge of grammars and automata, regular expressions, and finite state machines is recommended.
Introduction to the geometry and photometry of the 3D to 2D image formation process for the purpose of computing scene properties from camera images. Computing and analyzing motion in image sequences. Recognition of objects (what) and spatial relationships (where) from images and tracking of these in video sequences. Prerequisites: CMPUT 201 or 275; one of CMPUT 340, 418, ECE 240, or equivalent knowledge; one of MATH 101, 115, 118, 136, 146 or 156, and one of MATH 102, 125, or 127.
Effective: 2026-09-01 CMPUT 428 - Computer Vision
Introduction to the geometry and photometry of the 3D to 2D image formation process for the purpose of computing scene properties from camera images. Computing and analyzing motion in image sequences. Recognition of objects (what) and spatial relationships (where) from images and tracking of these in video sequences. Prerequisites: CMPUT 201 or 275; one of CMPUT 340, 418, or ECE 240; one of MATH 101, 115, 118, 136, 146 or 156; one of MATH 102, 125, 126, or 127; and permission of the Department.
A discussion of computer system design concepts with stress on modern ideas that have shaped the high-performance architecture of contemporary systems. Instruction sets, pipelining, instruction-level parallelism, register reuse, branch prediction, CPU control, cache- coherence, accelerators, and related concepts. Memory technologies, caches, I/O, high-performance networks. Prerequisites: CMPUT 201 or 275; and one of CMPUT 229, E E 380, or ECE 212. Credit may be obtained in only one of CMPUT 429, CMPE 382, or ECE 311.
When making decisions in games, computers rely on three main ideas: search, knowledge and simulations. Knowledge can be created by machine learning techniques and encoded in deep neural networks. Search and simulations help to understand the short and long-term consequences of possible actions. This course leads from basic concepts to state-of-the-art decision-making algorithms. Prerequisite: any 300-level Computing Science course.
Natural language processing (NLP) is a subfield of artificial intelligence concerned with the interactions between computers and human languages. This course is an introduction to NLP, with the emphasis on writing programs to process and analyze texts, covering both foundational aspects and applications of NLP. The course aims at a balance between classical and statistical methods for NLP, including methods based on machine learning. Prerequisites: 201 or 275, and any 300-level Computing Science course.
Probabilistic graphical models (PGMs; including Bayesian Belief Nets, Markov Random Fields, etc.) now contribute significantly to many areas, including expert systems, computer perception (vision and speech), natural language interpretation, automated decision making, and robotics. This course provides an introduction to this field, describing semantics, inference and learning, as well as practical applications of these systems. Programming assignments will include hands-on experiments with various reasoning systems. Prerequisites: one of CMPUT 340 or 418; and one of STAT 151, 161, 181, 235, 265, SCI 151, or MATH 181.
Effective: 2026-09-01 CMPUT 463 - Probabilistic Graphical Models
Probabilistic graphical models (PGMs; including Bayesian Belief Nets, Markov Random Fields, etc.) now contribute significantly to many areas, including expert systems, computer perception (vision and speech), natural language interpretation, automated decision making, and robotics. This course provides an introduction to this field, describing semantics, inference and learning, as well as practical applications of these systems. Programming assignments will include hands-on experiments with various reasoning systems. Prerequisites: one of CMPUT 204 or CMPUT 275; and one of CMPUT 267 or CMPUT 466.
Learning is essential for many real-world tasks, including recognition, diagnosis, forecasting and data-mining. This course provides a broad overview of topics in machine learning, from foundational methods for regression, classification and dimensionality reduction to more complex modeling with neural networks. It will also provide the formal foundations for understanding when learning is possible and practical. This single course is an alternative to the more in-depth two-course sequence on machine learning with CMPUT 267 and 467. Prerequisites: CMPUT 204 or 275; any 300-level Computing Science course; MATH 125 or 127; one of MATH 115, 118, 136, 146, or 156; and one of STAT 141, 151, 161, 181, 235, 265, SCI 151, or MATH 181. Credit cannot be obtained in CMPUT 466 if credit has already been obtained for CMPUT 467.
Effective: 2026-09-01 CMPUT 466 - Machine Learning Essentials
Learning is essential for many real-world tasks, including recognition, diagnosis, forecasting and data-mining. This course provides a broad overview of topics in machine learning, from foundational methods for regression, classification and dimensionality reduction to more complex modeling with neural networks. It will also provide the formal foundations for understanding when learning is possible and practical. This single course is an alternative to the more in-depth two-course sequence on machine learning with CMPUT 267 and CMPUT 467. Prerequisites: CMPUT 204 or CMPUT 275; any 300-level Computing Science course; MATH 102, 125, 126, or 127; one of MATH 115, 118, 136, 146, or 156; and one of STAT 151, 161, 181, 235, 265, SCI 151, or MATH 181. Credit cannot be obtained in CMPUT 466 if credit has already been obtained for CMPUT 467.
This is the second course of a two-course sequence on machine learning, with a focus on extending to nonlinear modeling with neural networks and higher-dimensional data. Topics include: optimization approaches (constrained optimization, hessians, matrix solutions), deep learning and neural networks, generative models, more advanced methods for assessing generalization (cross-validation, bootstrapping), introduction to non-iid data and missing data. Prerequisites: CMPUT 204 and CMPUT 267; any 300-level Computing Science course; and one of MATH 101, 115, 118, 136, 146, or 156. Credit cannot be obtained in both CMPUT 367 and 467.
Students will experience the challenges, and rewards, of working in a team to address a real-world task, related to artificial intelligence or machine learning. This will involve first identifying the task itself, then iteratively addressing relevant issues (typically with feedback from a domain expert), leading to an implementation and culminating in evaluating that system. Students will also learn about best practices in organizing team projects, as well as important information about effective communication. Prerequisites: CMPUT 267, 365, and 366.
Effective: 2026-09-01 CMPUT 469 - Artificial Intelligence Capstone
Students will experience the challenges, and rewards, of working in a team to address a real-world task, related to artificial intelligence or machine learning. This will involve first identifying the task itself, then iteratively addressing relevant issues (typically with feedback from a domain expert), leading to an implementation and culminating in evaluating that system. Students will also learn about best practices in organizing team projects, as well as important information about effective communication. Prerequisites: CMPUT 365, one of CMPUT 261 or CMPUT 366, and one of CMPUT 466 or CMPUT 467.
Formal grammars; relationship between grammars and automata; regular expressions; finite state machines; pushdown automata; Turing machines; computability; the halting problem; time and space complexity. Prerequisites: CMPUT 204 and one of MATH 225, 227, or 228.
Effective: 2026-09-01 CMPUT 474 - Formal Languages, Automata, and Computability
Formal grammars; relationship between grammars and automata; regular expressions; finite state machines; pushdown automata; Turing machines; computability; the halting problem; time and space complexity. Prerequisites: CMPUT 204 and one of MATH 102, 125, 126, or 127.
This course provides an undergraduate-level introduction to parallel programming, parallel and distributed systems, and high-performance computing in science and engineering. Both shared-memory parallel computers and distributed-memory multi computers (e.g., clusters) will be studied. Aspects of the practice of, and (some) research issues in, parallelism will be covered. There will be an emphasis on thread programming, data-parallel programming, and performance evaluation. Prerequisite: CMPUT 379.
This weekly seminar brings students, researchers, and practitioners together to examine a variety of topics, both foundational and leading edge. Content varies over successive offerings of the course. Successful completion required of all Honors Computing Science students during each Fall/Winter semester of their degree program. Prerequisite: Restricted to Honors Computing Science students, or permission of the Department.
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 496 - Topics in Computing Science
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 496A - Topics in Computing Science
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 496B - Topics in Computing Science
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 497 - Topics in Computing Science
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 497A - Topics in Computing Science
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 497B - Topics in Computing Science
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 498 - Topics in Computing Science
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 498A - Topics in Computing Science
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 498B - Topics in Computing Science
This topics course is designed for new course offerings that may be offered in a given term. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for a one on one individual study course between a student and an instructor. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 499 - Topics in Computing Science
This topics course is designed for a one on one individual study course between a student and an instructor. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for a one on one individual study course between a student and an instructor. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 499A - Topics in Computing Science
This topics course is designed for a one on one individual study course between a student and an instructor. Prerequisites for each section may differ and are defined by the instructor in the course outline.
This topics course is designed for a one on one individual study course between a student and an instructor. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
Effective: 2026-09-01 CMPUT 499B - Topics in Computing Science
This topics course is designed for a one on one individual study course between a student and an instructor. Prerequisites for each section may differ and are defined by the instructor in the course outline.
Software quality issues are covered. Various types of software testing, ranging from unit testing to integration testing are discussed. Processes to ensure quality, such as reviews and continuous integration, are introduced. State-of-the-art software quality tools that analyze different artifacts within the software lifecycle are described. Credit cannot be obtained for both CMPUT 402 and 502.