Search
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.
2D and 3D transformation; 3D modeling and viewing; illumination models and shading methods; texture mapping; ray tracing. Credit cannot be obtained for both CMPUT 411 and 511.
2D and 3D transformation; 3D modeling and viewing; illumination models and shading methods; texture mapping; ray tracing. Credit cannot be obtained for both CMPUT 411 and 511.
2D and 3D transformation; 3D modeling and viewing; illumination models and shading methods; texture mapping; ray tracing. Credit cannot be obtained for both CMPUT 411 and 511.
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. Credit cannot be obtained for both CMPUT 412 and 512.
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. Credit cannot be obtained for both CMPUT 429 and 529.
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 text corpora. The course covers 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. In this course, students will clean or otherwise pre-process natural language corpora; develop natural language processing tools; integrate existing tools into an analysis task; and apply computational methods to natural language artefacts to extract information, classify the language within the artefact, identify relationships among artefacts, or identify relationships among elements within an artefact. Credit cannot be obtained for both CMPUT 461 and 561.
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. Credit cannot be obtained for both CMPUT 463 and 563.
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. Credit cannot be obtained for both CMPUT 463 and 563.
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. Credit cannot be obtained for both CMPUT 463 and 563.
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. Credit cannot be obtained for both CMPUT 466 and 566.
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. Credit cannot be obtained for both CMPUT 466 and 566.
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. Credit cannot be obtained for both CMPUT 466 and 566.
This course expands on machine learning fundamentals 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. Credit cannot be obtained for both CMPUT 467 and 567 or CMPUT 367 and 567.
This course provides information and resources on teaching and research methods in computing science, and also gives an overview of the research done by faculty in the department. Ethics and professional development are included in this course. Required for all graduate students.