This Course and Program Catalogue is effective from May 2019 to April 2020.

Not all courses described in the Course and Program Catalogue are offered each year. For a list of course offerings in 2019-2020, please consult the class search website.

The following conventions are used for course numbering:

  • 010-099 represent non-degree level courses
  • 100-699 represent undergraduate degree level courses
  • 700-999 represent graduate degree level courses

Course search


98 Results

CMPT 100.3: Introduction to Computing

A survey of major computer science areas, combining a breadth of topics with depth via specific examples within each topic. Topics include: history of computing, computer applications, analysis and design, high level programming, computer software, computer hardware, artificial intelligence, and the social impact of computers.

Weekly hours: 3 Lecture hours and 1.5 Tutorial hours
Prerequisite(s): Mathematics A30 or B30 or C30; or Foundations of Mathematics 30; or Pre-Calculus 30.
Note: Students can receive credit for only one of CMPT 100 or CMPT 120. Students with credit for CMPT 105, 111, 140 or 141 may not take CMPT 100 for credit. Students wishing to major in computer science are advised to take CMPT 141 or CMPT 140. Students majoring in computer science may not use CMPT 100 as a course in their major, but may count it as a junior elective.


CMPT 113.3: Introduction to Computer Science for Engineers

An introduction to computer science and problem solving using procedural programming. This course introduces the basic computer science and computer programming principles of algorithms, abstraction, encapsulation, variables, conditional branching, repetition, functions, recursion, and elementary data structures. These concepts are applied to problem solving applications such as data analysis and visualization, simulation, text processing, and image processing. An introduction to MATLAB leverages the basic principles in an Engineering-specific setting.

Weekly hours: 3 Lecture hours and 1.5 Practicum/Lab hours
Prerequisite(s): Mathematics B30 or Foundations of Mathematics 30 or Pre-Calculus 30.
Note: Students who have credit for CMPT 106, CMPT 111, or CMPT 116 may not receive credit for this course. CMPT 113 cannot be used as a prerequisite for CMPT 117 unless the student has achieved a grade of 75% or higher in CMPT 113 and has permission of the CMPT 117 instructor.


CMPT 116.3: Computing I

Gives the fundamentals of programming, including functions, procedures and arrays. It introduces object-oriented programming and GUI components. Also some basic numerical methods and engineering applications are presented.

Weekly hours: 3 Lecture hours and 1.5 Practicum/Lab hours
Restriction(s): Restricted to students in Physics and Engineering.
Prerequisite(s): Mathematics B30 or Foundations of Mathematics 30 or Pre-Calculus 30.
Note: Students who have credit for CMPT 111 or CMPT 113 may not receive credit for CMPT 116.


CMPT 120.3: Digital Document Processing

Is intended for students interested in how to effectively use modern computer software, and in learning how computers work. It provides an overview of: computer and software components; networking; computer security; basic and advanced document preparation; spreadsheets; and data presentation.

Weekly hours: 3 Lecture hours and 1.5 Practicum/Lab hours
Note: Students can receive credit for only one of CMPT 100 or CMPT 120. Students with credit for CMPT 105, 111, 140 or 141 may not take CMPT 120 for credit. Students wishing to major in computer science are advised to take CMPT 141, or CMPT 140 if required. Students majoring in computer science may not use CMPT 120 as a course in their major, but may count it as a junior elective.


CMPT 140.3: Introduction to Creative Computing

Concepts in Computing such as algorithms, problem solving, and programming are explored using interactive multimedia systems as the creative focus. Basic skills in problem solving, programming, design and interaction, event-based behaviour, and prototyping are developed.

Weekly hours: 3 Lecture hours and 1.5 Practicum/Lab hours
Note: Recommended for students who do not have Computer Science 30. CMPT 140 can be taken for credit after the completion of CMPT 100, but CMPT 100 cannot be taken for credit after completion of CMPT 140. Students with credit for CMPT 105, CMPT 111, CMPT 113, or CMPT 116 cannot obtain credit for CMPT 140. Students majoring the Interactive Systems Design, Computer Science, and Bioinformatics programs may not use CMPT 140 as a course in their major, but may count it as a junior elective.


CMPT 141.3: Introduction to Computer Science

An introduction to computer science and problem solving using procedural programming. This course introduces the basic computer science and computer programming principles of algorithms, abstraction, encapsulation, variables, conditional branching, repetition, functions, recursion, and elementary data structures. These concepts are applied to problem solving applications such as data analysis and visualization, simulation, text processing, and image processing. The programming skills acquired in this course are applicable in all fields of study, the work-place, and personal projects.

Weekly hours: 3 Lecture hours and 1.5 Practicum/Lab hours
Prerequisite(s): One of (Computer Science 30, CMPT 105, CMPT 140) and one of (Mathematics B30, Foundations of Mathematics 30, Pre-Calculus 30); or MATH 110, MATH 123, or MATH 176 (can be taken concurrently).
Note: Recommended for students with Computer Science 30, CMPT 140 or CMPT 105, or for students in programs that require MATH 110 (or equivalent). Students with credit for CMPT 115 or CMPT 117 cannot take this course for credit. Students may not take CMPT 100 or 120 for credit concurrently with or after CMPT 141.


CMPT 145.3: Principles of Computer Science

This course builds on CMPT 141 by introducing additional problem solving methods and computer science principles, to solve larger problems that are more data intensive, or require more sophisticated techniques. These principles include data structures for efficient storage and retrieval of data, selection of appropriate data structures, algorithmic paradigms for solving difficult problems, and analysis of algorithms time and space requirements. This course also emphasizes fundamental principles of coding style, testing, and top-down design for writing robust, maintainable software.

Weekly hours: 3 Lecture hours and 1.5 Practicum/Lab hours
Prerequisite(s):CMPT 141; or CMPT 111 and permission of the department.
Note:Students with credit for CMPT 270 cannot take CMPT 145 for credit.


CMPT 214.3: Programming Principles and Practice

A hands-on approach to software development at the individual and small team level. Application of software tools- including scripting languages, system utilities and libraries- for construction of small software systems. Integrated with and motivated by programming practices, system development, testing and maintenance issues.

Weekly hours: 3 Lecture hours and 2 Practicum/Lab hours
Prerequisite(s):CMPT 145 or CMPT 115 or CMPT 117.
Note: Students who have credit for CMPT 330 may not take this course for credit.


CMPT 215.3: Introduction to Computer Organization and Architecture

An introduction to the design of contemporary computer systems, focusing on the hardware-software interface and the upper hardware levels. Topics include machine and assembly language, computer arithmetic, the processor datapath and control, pipelining, memory hierarchies, and I/O systems.

Weekly hours: 3 Lecture hours and 1.5 Tutorial hours
Prerequisite(s): CMPT 214 and one of MATH 104, MATH 110, MATH 121, MATH 123, MATH 125, MATH 176 or STAT 245 (or equivalent).
Note: A student cannot receive credit for more than one of CMPT 215, EE 331, or CME 331.


CMPT 260.3: Mathematical Logic and Computing

An introduction to elementary applied propositional and predicate logic. Fundamental proof techniques with an emphasis on induction. The theory of sets, relations and functions. Course concepts are related to computer science areas, with an emphasis on relational databases.

Weekly hours: 3 Lecture hours and 1.5 Tutorial hours
Prerequisite(s): MATH 110 or MATH 176; and one of CMPT 145, CMPT 115, or CMPT 117.


CMPT 270.3: Developing Object-Oriented Systems

Object-oriented programming. The use of modeling, abstractions, patterns, and GUIs to design and build a good OO system. Unit testing to ensure that it works. Application of the techniques to interactive systems.

Weekly hours: 3 Lecture hours and 1.5 Tutorial hours
Formerly: First half of CMPT 250.6.
Prerequisite(s): CMPT 145 or CMPT 115 or CMPT 117; and one of MATH 104, MATH 110, MATH 121, MATH 123, MATH 125, MATH 176 or STAT 245 (or equivalent).
Note: Students with credit for CMPT 250 may not take this course for credit.


CMPT 280.3: Intermediate Data Structures and Algorithms

Formal abstract data types; tree representations and searching: ordered trees, balanced trees, simple spacial trees; graph representations and searching: path algorithms, dfs, bfs, backtracking, and sorting algorithms.

Weekly hours: 3 Lecture hours and 1.5 Tutorial hours
Formerly: Second half of CMPT 250.6.
Prerequisite(s): CMPT 270.
Note: Students with credit for CMPT 250 may not take this course for credit.


CMPT 281.3: Website Design and Development

Introduction to design concepts and issues in the development of usable applications on the World Wide Web, including visual design concepts, the user-centered iterative design process, and development technologies that enable application development for the Web.

Weekly hours: 3 Lecture hours and 1 Practicum/Lab hours
Prerequisite(s): CMPT 141.3 or CMPT 106.3 or CMPT 111.3
Note: CMPT 281 cannot be used towards requirements for a B.Sc. in Computer Science, but may be used as an open elective. CMPT 281 cannot be taken after CMPT 381 or CMPT 370 (but may be taken concurrently).


CMPT 298.3: Special Topics

Offered occasionally by visiting faculty and in other special situations to cover, in depth, topics that are not thoroughly covered in regularly offered courses.

Weekly hours: 3 Lecture hours


CMPT 299.6: Special Topics

Offered occasionally by visiting faculty and in other special situations to cover, in depth, topics that are not thoroughly covered in regularly offered courses.

Weekly hours: 3 Lecture hours


CMPT 306.3: Game Mechanics

Will cover aspects of game graphics, physics, sound, input, AI and networking at an introductory level. This course is intended to provide a broad basis in computer game-related fields, serving as the primer and providing context for specialized courses in fourth year.

Weekly hours: 3 Lecture hours and 1.5 Tutorial hours
Prerequisite(s): CMPT 270. MATH 264 or MATH 266 are recommended.


CMPT 317.3: Introduction to Artificial Intelligence

A survey of essential Artificial Intelligence techniques and underlying theory. Basic search strategies, including uninformed search, heuristic search, and games. Basic knowledge representation and reasoning, including propositional satisfiability and theorem proving, Bayes rule, and Bayesian networks. Basic machine learning, including k-nearest neighbours, decision trees, neural networks, naive Bayes classifier, k-means.

Weekly hours: 3 Lecture hours and 1 Tutorial hours
Prerequisite(s): CMPT 260; and CMPT 280; and one of STAT 242 or STAT 245 or EE 216 or ME 251.


CMPT 332.3: Operating Systems Concepts

An introduction to the principles of modern operating systems. The synchronization and communication of cooperating processes. Process Scheduling. Virtual Memory. File System design and organization. Introduction to distributed systems.

Weekly hours: 3 Lecture hours and 1 Practicum/Lab hours
Formerly: CMPT 422.
Prerequisite(s): CMPT 280, and CMPT 215 or CME 331.
Note: Students with credit for CMPT 422 may not take this course for credit.


CMPT 340.3: Programming Language Paradigms

A comparative study of programming languages and paradigms. Introduction to functional programming languages, such as Haskell; topics include: recursion, higher-order functions, polymorphic types, lazy evaluation. Introduction to logic programming languages, such as Prolog; topics include: unification, backtracking, resolution, non-determinism. An introduction to interpreters, parsers, program transformations, and semantic models.

Weekly hours: 3 Lecture hours and 1 Tutorial hours
Prerequisite(s): CMPT 214, 260, and 270.
Note: One of CMPT 215 or CME 331 recommended.


CMPT 350.3: Web Programming

Focuses on the concepts, technologies and tools needed for the development of web-centric applications. Special emphasis will be given to client-server programming, scripting, integration of existing application and high-level networking issues, e.g., use of SOAP.

Weekly hours: 3 Lecture hours and 1.5 Tutorial hours
Prerequisite(s): CMPT 280.
Note: Students with credit for CMPT 353 cannot take this course for credit.


CMPT 352.3: An Introduction to Information Security

Considers various aspects of security in information systems, both networked and non-networked. The challenges are managerial and administrative as well as technical. Students will have the opportunity to research real-world cases and to engage in classroom debates about current information security issues.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 270 or CMPT 275.


CMPT 353.3: Full Stack Web Programming

Introduction into full-stack web programming. Basic client-server architecture. HTML & JavaScript. Front-end development frameworks. Databases & Web Storage. Web server platforms. Backenddevelopment platforms. Web Service (SOAP/REST). Web Application Architecture.

Weekly hours: 3 Lecture hours and 1 Practicum/Lab hours
Prerequisite(s): CMPT 280.3
Note: Students with credit for CMPT 350.3 cannot take this course for credit.


CMPT 355.3: Theory and Application of Data Bases

Lectures, assignments and projects dealing with the management, storage, and retrieval of large volumes of data. Concentrates on the relational data model, and relational data base management systems. Topics include: temporal data, recovery and concurrency, integrity and security, normalization, and semantic modelling. Additional topics include multimedia databases and other paradigms.

Weekly hours: 3 Lecture hours and 1 Tutorial hours
Formerly: CMPT 374.
Prerequisite(s): CMPT 260 and 270, or CMPT 275.
Note: Students with credit for CMPT 374 may not take this course for credit.


CMPT 360.3: Machines and Algorithms

The first part develops and analyzes some standard techniques for algorithm development which are widely applicable to computer science problems. The second part analyzes several formal models of computers so that their capabilities are known.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 260 and CMPT 280; and 9 credit units MATH or STAT


CMPT 364.3: Automata and Formal Languages

Introduces the foundations of Computer Science. The theory of computation is explored through automata and formal languages. In particular, finite automata, grammars, Turing Machines and applications to computer science such as dynamic modeling, computer architecture, lexical analysis and parsing are studied.

Prerequisite(s): CMPT 260 and 9 credit units MATH or STAT.


CMPT 370.3: Intermediate Software Engineering

Principles and techniques for developing software combined with the practical experience of creating a mid-size software system as a member of a software development team. Includes: teamwork; projects, planning and process; users and requirements; use cases; modeling; quality; software architecture; testing; GUI design, design principles, patterns and implementation; ethics; professionalism.

Weekly hours: 3 Lecture hours and 1.5 Tutorial hours
Prerequisite(s): CMPT 280.3.


CMPT 371.3: Software Management

Covers software management topics in the context of a significant group project. Includes: software process; process improvement; project tracking and metrics; project planning; project and group management; IT enterprise strategy and planning; software configuration management; deployment and maintenance; inspection; testing; verification and validation; and quality assurance.

Weekly hours: 3 Lecture hours and 1.5 Practicum/Lab hours and 1.5 Tutorial hours
Prerequisite(s): CMPT 214.3 and CMPT 370.3.
Prerequisite(s) or Corequisite(s): CMPT 280.


CMPT 381.3: Implementation of Graphical User Interfaces

Advanced introduction to concepts and structures used to develop GUIs in software, focusing on building user interfaces. Covers the fundamentals of GUI toolkits including input, widgets, layout, events, model-view-controller architectures, and two-dimensional graphics.

Weekly hours: 3 Lecture hours and 1 Practicum/Lab hours
Prerequisite(s): CMPT 270


CMPT 384.3: Information Visualization

This course will introduce visualization process for different datasets, design principals, techniques for developing effective visualizations, visualization algorithms and interaction techniques. The course is targeted to students interested in using visualization in their own work, as well as to those who are interested in developing visualization systems. Topics include: data abstractions, visualization process, design principles, visualizations of tabular data, geo-visualizations, cartographic representation, visualization for sets, temporal and hierarchical data (treemaps, radial layouts), network visualizations, visualization algorithms and software, interactions with large datasets, and a brief overview of visual analytics.

Weekly hours: 3 Lecture hours and 1 Tutorial hours
Prerequisite(s): CMPT 280 (required); MATH 164 (formerly MATH 264) recommended.
Note: Students with credit for CMPT 398.3 Information Visualization may not take this course for credit.


CMPT 394.3: Simulation Principles

Introduction to the development of logical, numerical and statistical models of systems; deterministic and probabilistic models; Monte Carlo simulations. Basic elements involved in simulation such as entities, attributes, events and time representation. Properties of computer modelling languages; design, development and testing of models.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 270.
Prerequisite(s) or Corequisite(s): One of STAT 242, 245, or EE 216 (STAT 242 preferred.)


CMPT 398.3: Special Topics

Offered occasionally by visiting faculty and in other special situations to cover, in depth, topics that are not thoroughly covered in regularly offered courses.

Weekly hours: 3 Seminar/Discussion hours


CMPT 399.6: Special Topics

Offered occasionally by visiting faculty and in other special situations to cover, in depth, topics that are not thoroughly covered in regularly offered courses.

Weekly hours: 3 Seminar/Discussion hours


CMPT 400.3: Research Topics in Computer Science

Senior students will be introduced to research in an advanced area of computer science under the supervision of a faculty member specializing in the area.

Weekly hours: 1.5 Seminar/Discussion hours
Permission of the department required.
Prerequisite(s): In the final year of an Honours Program; or a cumulative percentage average of at least 70% in 24 credit units in computer science and written permission of the department.


CMPT 401.0: Professional Internship I

Internship students register in this zero-credit-unit course for the first four-month installment of the 16 month internship placement. This course is graded on a Pass/Fail basis.

Permission of the department required.
Prerequisite(s): Professional internship placement with a sponsoring employer.


CMPT 402.0: Professional Internship II

Internship students register in this zero-credit-unit course for the second four-month installment of the 16 month internship placement. This course is graded on a Pass/Fail basis.

Prerequisite(s): CMPT 401.


CMPT 403.0: Professional Internship III

Internship students register in this zero-credit-unit course for the third four-month installment of the 16 month internship placement. This course is graded on a Pass/Fail basis.

Prerequisite(s): CMPT 402.


CMPT 404.0: Professional Internship IV

Internship students register in this zero-credit-unit course for the last four-month installment of the 16 month internship placement. This course is graded on a Pass/Fail basis.

Prerequisite(s): CMPT 403.


CMPT 405.3: Project Design and Implementation

Senior students apply engineering and scientific methods to develop a major computer system or system component. Students work individually or in teams and are supervised by a faculty member specializing in the area. Students prepare and present interim and final reports on their project.

Weekly hours: 1.5 Practicum/Lab hours and 1.5 Seminar/Discussion hours
Permission of the department required.
Prerequisite(s): In the final year of an Honours Program; or a cumulative percentage average of at least 70% in 24 credit units in computer science.


CMPT 406.3: Game Design Workshop

This course will focus on topics of game design, game software engineering, and project management. Students will engage in a significant project in a large team of between 8 and 15 students (common in independent game development studios) and build a game of sufficient sophistication to warrant potential publication on an app or software store. This course is intended as a capstone for the ISD program, but is open to students in other programs also.

Prerequisite(s): CMPT 306


CMPT 408.3: Ethics and Computer Science

Addresses social, ethical, legal and managerial issues in the application of computer science to the information technology industry. Through seminars and case studies, human issues confronting computer science graduates will be addressed. Topics include managerial and personal ethics, computer security, privacy, software reliability, personal responsibility for the quality of work, intellectual property, environment and health concerns, and fairness in the workplace.

Weekly hours: 3 Lecture hours
Prerequisite(s): Successful completion of 30 credit units in computer science, including at least 3 credit units at the 400-level of computer science.


CMPT 412.3: Social Computing and Participative Web 2.0

Will cover a variety of topics related to the emerging area of Social Computing and Participative Web. It will discuss theories, technologies and human issues of Web 2.0: how people network online, what communities they form, why they participate and contribute, and how to design infrastructures for successful online communities.

Prerequisite(s): CMPT 353.3


CMPT 423.3: Machine Learning

A survey of Machine Learning techniques, their underlying theory, and their application to realistic data. Machine learning techniques may include Neural Networks, Support Vector Machines, Bayesian networks, Hidden Markov Models, Particle Filtering; Expectation-Maximization; Sampling; Evaluation methodologies; Over-fitting and Regularization. Software tools will be introduced for practical application.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 317, STAT 245, and MATH 164 .


CMPT 432.3: Advanced Operating Systems Concepts

An advanced look at the principles of modern operating systems. The process and the kernel, communication between processes, interrupt handling in the kernel. Message passing and synchronization primitives and their implementation. Implementation of Virtual memory and file systems. Device drivers and I/O.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 332.


CMPT 433.3: System and Network Administration

The deployment and maintenance of modern computer systems. Topics to be covered include architectures, heterogeneous systems, authentication and security, network services including firewalls, storage services, performance analysis and tuning, management and configuration of services and system resources, system initialization, drivers, cross-platform services, policies and procedures.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 332.3
Prerequisite(s) or Corequisite(s): One of CMPT 432.3, CMPT 434.3 or CMPT 438.3.


CMPT 434.3: Computer Networks

The principles and practice of computer networking, focusing on the Internet and its structure, protocols, and applications. Topics include network applications and programming, reliable data transfer, flow and congestion control, routing, multimedia networking, local area networks, security, and network management.

Weekly hours: 3 Lecture hours
Formerly: CMPT 424.
Prerequisite(s): CMPT 332.
Note: Students with credit for CMPT 424 may not take this course for credit.


CMPT 435.3: Foundations of Concurrent Programming

Theory and practice of concurrent programming. Process interaction using shared variables and message passing; parallel computing; development of correct programs; general problem solving techniques; scientific computing; distributed programming.

Weekly hours: 3 Lecture hours and 1 Practicum/Lab hours
Prerequisite(s): CMPT 215 and 6 credit units from: CMPT 332, CMPT 340, CMPT 360.
Note: Students with credit for CMPT 835 may not take this course for credit. CMPT 435 and CMPT 835 possess overlapping content.


CMPT 436.3: Mobile and Cloud Computing

Investigates the problems and possible approaches for enabling mobile and cloud computing. After a brief discussion of the basic problems in developing applications for the field, the class will focus on technologies such as RPC, RMI/Remoting, Web Services (SOAP/REST) and cloud platforms like IaaS, PaaS and SaaS.

Weekly hours: 3 Lecture hours
Formerly: CMPT 426.
Prerequisite(s): One of CMPT 332, 350 or 370.
Note: Students with credit for CMPT 426 may not take this course for credit.


CMPT 438.3: Introduction to Computer Security

Computer security is an essential requirement of any software system. This course covers the fundamental principles, mechanisms and models of security. More specifically, the course introduces students to security management, defense, and exploitation techniques including but limited to vulnerability assessment, access control, cryptography, intrusion detection, malicious software. The course assesses current security threats and gives students a hands-on experience with basic security strategies.

Weekly hours: 3 Lecture hours and 1 Practicum/Lab hours
Prerequisite(s): CMPT 332.3
Prerequisite(s) or Corequisite(s): CMPT 434.3


CMPT 440.3: Advanced Topics in Programming Languages

Advanced topics in programming languages will be selected from: programming language design, programming language semantics, code optimization, memory management, garbage collection, closures, functional programming, logic programming, aspect-orient programming, concurrent programming, history of programming languages, advanced programming language features and their implementation, polymorphic type systems, domain specific languages.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 340.


CMPT 442.3: Compiler Design and Implementation

Introduction to the systematic construction of a compiler: context-free and regular grammars, scanners, attribute grammars, parsing, syntax trees, runtime organization, symbol tables, internal representations, compile-time error handling, semantic analysis, storage allocation, code generation, linking, byte code, interpreters. Students will use compiler construction tools in a term project.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 215 or CME 331.3; and CMPT 360.
Note: CMPT 340 recommended.


CMPT 463.3: Advanced Algorithms

A continuation of the algorithms part of CMPT 360. Some of the algorithm techniques include: augmenting algorithms for network flows, matching and graph connectivity, geometric algorithms for nearest neighbour, intersection problems, and convex hull, parallel and distributed algorithms.

Weekly hours: 3 Lecture hours
Formerly: CMPT 416.
Prerequisite(s): CMPT 360.
Note: Students with credit for CMPT 416 may not take this course for credit.


CMPT 470.3: Advanced Software Engineering

Covers advanced software engineering principles and techniques. Includes: software architecture; software evolution; reverse engineering; design recovery; refactoring; software comprehension; software analysis; domain specific techniques; requirements and specification; advanced design and modeling techniques; formal methods; and the business of software.

Weekly hours: 3 Lecture hours


CMPT 479.3: Usability Engineering

This course presents a requirements engineering (RE) approach to usability engineering (UE) by providing in depth coverage of Usability Centered Development (UCD). UE and UCD provide a structured approach to developing usable user interface designs. UE helps integrate human-computer interaction (HCI) requirements and design approaches within development projects managed by software engineering (SE) methodologies.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 370 or permission of instructor.


CMPT 480.3: Accessible Computing

Investigates accessibility issues and features relating to the analysis and design of computing applications. It introduces major sources of information on accessible computing and works towards developing a comprehensive strategy for improving the accessibility of computing applications.

Weekly hours: 3 Lecture hours
Formerly: Was offered as Special Topics 498.
Prerequisite(s): 9 credit units of CMPT courses at the 300-level or above.


CMPT 481.3: Human Computer Interaction

Fundamental theory and practice in the design, implementation, and evaluation of human-computer interfaces. Topics include: principles of design, usability engineering, methods for evaluating interfaces with or without user involvement, techniques for prototyping and implementing graphical user interfaces.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 370 or CMPT 381.


CMPT 484.3: Graph Drawing and Network Visualization Network Visualization

This course will introduce mathematical models of networks, analysis of network structure, and visualization process for real-life network datasets. The course will put a special focus on graph drawing, which contains the algorithmic core for network analysis and visualization, and present how an abstract graph layout can be used to create effective visualizations for real-life networks. The content of this course will draw examples from many applied areas such as social sciences, computational biology, communication networks, VLSI circuits, and software engineering. The course is targeted to students interested in network analysis, as well as in visual analytics of network data. Topics include: Combinatorial analysis of graphs, common graph drawing algorithms, network visualization aesthetics, structural analysis of networks, an overview of network analysis tools and software, visualization of geospatial and dynamic networks, layered visualization of large networks, information propagation on a network, user interactions, and case studies from different practical domains.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 360 and CMPT 384 (required); CMPT 350 and CMPT 381 (recommended).
Note: Students cannot receive credit for both CMPT 484.3 and CMPT 824.3.


CMPT 485.3: Computer Graphics and Animation

Advanced topics in computer graphics, concentrating on image formation and modelling issues. The implications of the data-driven approach to computer graphics. Simulation and non-parametric methods contrasted. The course will involve a project investigating and implementing some current algorithms from the literature.

Weekly hours: 3 Lecture hours
Prerequisite(s): 6 credit units of 300-level CMPT, and one of (MATH 164 or MATH 266 or EE 216 or CE 318).


CMPT 487.3: Image Processing and Computer Vision

Presents the fundamentals of theory and practice of image processing and computer vision. A range of topics are presented covering the phases of a typical image processing and computer vision pipeline: image preprocessing, image segmentation, region description, and classification/decision-making. Theory is practiced through computer programming assignments using a modern image processing library. Students completing this course can expect to be able to solve image processing and computer vision problems of up to moderate difficulty that increasingly arise across a wide range of disciplines and application areas.

Weekly hours: 3 Lecture hours
Prerequisite(s): (MATH 164.3, 266.3, EE 216.3, CE 318.3; ) and one of (CMPT 317.3, CMPT 332.3, CMPT 340.3, CMPT 370.3).
Note: Students with credit for CMPT 424 may not take this course for credit.


CMPT 498.3: Special Topics

Offered occasionally by visiting faculty and in other special situations to cover, in depth, topics that are not thoroughly covered in regularly offered courses.

Weekly hours: 3 Seminar/Discussion hours


CMPT 499.6: Special Topics

Offered occasionally by visiting faculty and in other special situations to cover, in depth, topics that are not thoroughly covered in regularly offered courses.

Weekly hours: 3 Seminar/Discussion hours


CMPT 810.3: Algorithms

Advanced design and analysis of algorithms. Includes pattern matching in strings, augmenting algorithms on graphs (including network flows, connectivity, and matching), computational geometry (including convex hulls, Voronoi diagrams, intersection problems, and planar point location), parallel algorithms for shared memory and interconnection network models, and distributed algorithms.

Weekly hours: 3 Lecture hours


CMPT 811.3: Advanced Human Computer Interaction

Fundamental theory in the design, implementation, and evaluation of human-computer interfaces, and understanding of the research issues underlying interaction. Topics include: general principles of design, the design of evaluation techniques, methods for prototyping and implementing graphical user interfaces, and theoretical issues underlying user input, representation, and visualization.

Weekly hours: 3 Lecture hours and 1 Tutorial hours
Prerequisite(s): CMPT 370 or permission of the instructor.


CMPT 815.3: Computer Systems and Performance Evaluation

Provides a comprehensive overview of the quantitative aspects of computer systems with a particular focus on performance evaluation. Topics include performance measurement, the analysis and interpretation of measurement data, workload characterization and modeling, the design and evaluation of performance experiments, and the design and application of analytical techniques. A variety of application domains will be considered.

Weekly hours: 3 Lecture hours


CMPT 816.3: Advanced Software Engineering

Concerns the major practical and theoretical concepts used in building large-scale software systems. Emphasizes current software development methodologies and tool support that accompanies the methodologies. The areas of software development that will be emphasized are: requirements definition and analysis; system design; and implementation and testing.

Weekly hours: 3 Lecture hours
Note: Students with credit for CMPT 470 will not receive credit for this course.


CMPT 817.3: Usability Engineering

Is a structured approach to developing usable interface designs. The course helps integrate human-computer interaction (HCI) requirements and design approaches within development projects managed by software engineering (SE) methodologies. The course also presents a requirements engineering (RE) approach to usability engineering by providing in-depth coverage of the Putting Usability First development methodology.

Weekly hours: 3 Lecture hours
Permission of the instructor is required.


CMPT 819.3: Advanced Image Processing and Computer Vision

Presents the fundamentals of theory and practice of image processing and computer vision. A range of topics are presented covering the phases of a typical image processing and computer vision pipeline: image preprocessing, image segmentation, region description, and classification/decision-making. Theory is practiced through computer programming assignments using a modern image processing library, and a course project. Students completing this course can expect to be able to solve image processing and computer vision problems of up to moderate difficulty that increasingly arise across a wide range of disciplines and application areas.

Weekly hours: 3 Lecture hours
Note: CMPT 819 and CMPT 487 are mutually exclusive. Students cannot obtain credit for both.


CMPT 820.3: Topics in Learning and Intelligent Systems

This course explores advanced techniques for management and analysis of data in unstructured application environments. Techniques covered may be chosen from the following: Bayesian modelling, data conditioning, machine learning (Bayesian inference, neural networks, decision trees, classifiers), user interface agents, and other similar techniques in the AI research literature as appropriate.

Weekly hours: 3 Lecture hours
Prerequisite(s): Open to graduate students in computer science who have at least one undergraduate course (3 credit units) of Artificial Intelligence.


CMPT 821.3: Advanced Topics in Programming Languages

Advanced topics in programming languages will be selected from: programming language design, programming languages semantics, code optimization, memory management, garbage collection, closures, functional programming, logic programming, aspect-oriented programming, concurrent programming, history of programming languages, advanced programming language features and their implementation, polymorphic type systems, domain specific languages.

Weekly hours: 3 Lecture hours
Prerequisite(s): Open to graduate students in computer science who have at least one undergraduate course (3 credit units) in Programming Languages.


CMPT 823.3: Compilers

The definition and classification of formal grammars. A discussion of regular and context-free grammars with their relationships to automata. Precedence, operator precedence, LR(k) and LALR(k) grammars with their associated syntactic analyzers, symbol table techniques, intermediate forms of source programs, run-time organization, code generation and optimization. Interpreters and their relation to the compilation process. Introduces translator writing systems and compiler-compilers.

Weekly hours: 3 Lecture hours


CMPT 824.3: Graph Drawing and Network Visualization

This course will introduce mathematical models and analysis of graphs to visualize real-life network datasets. The course will put a special focus on the algorithmic core for network visualization. The students interested in network layout, analysis, and visual analytics of networks will be benefited from this course.

Note: Students cannot receive credit for both CMPT 484.3 and CMPT 824.3.


CMPT 826.3: Data and Process Modeling and Analytics

Topics may be chosen from the following: collection; dimensional modelling; warehousing; evaluating, enhancing and protecting the value of information; system architectures for data management and manipulation; data mining; advanced querying; deployment in scientific and commercial applications.

Weekly hours: 3 Lecture hours and 2 Practicum/Lab hours


CMPT 829.3: Computer Graphics

An introduction to computer graphics that includes real-time and off-line realistic image synthesis techniques, and basic animation techniques such as key framing and physics-based methods. Programmable raster graphics, ray tracing and efficient data structures for both are also introduced.

Weekly hours: 3 Lecture hours


CMPT 830.3: Bioinformatics and Computational Biology

Provides an in-depth algorithms-based introduction to major concepts and techniques in bioinformatics. Topics include algorithms for structure prediction and similarity, sequence similarity and alignment, metabolic and regulatory pathways, sequence assembly, comparative genomics, expression analysis, database searching, artificial life and biological computation.

Weekly hours: 3 Lecture hours
Prerequisite(s): A previous BINF class, or at least 6 credit units of previous course work in each of computer science, statistics and the life sciences.


CMPT 832.3: Advanced Operating Systems

An advanced look at the principles of modern operating systems. The process and the kernel, communication between processes, interrupt handling in the kernel. Message passing and synchronization primitives and their implementation. Implementation of virtual memory and file systems. Device drivers and I/O.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 332.


CMPT 835.3: Foundations of Concurrent Programming

Theory and practice of concurrent programming. Process interaction using shared variables and message passing; parallel computing; development of correct programs; general problem solving techniques; scientific computing; distributed programming.

Weekly hours: 3 Lecture hours and 1 Practicum/Lab hours
Note: Students with credit for CMPT 435 cannot take this course for credit. CMPT 435 and CMPT 835 possess overlapping content.


CMPT 840.3: Accessible Computing

Investigates accessibility issues and features relating to the analysis and design of computing applications. It introduces major sources of information on accessible computing and works towards developing a comprehensive strategy for improving the accessibility of computing applications.

Weekly hours: 3 Lecture hours
Permission of the instructor is required.


CMPT 842.3: Mobile and Cloud Computing

After a brief discussion of the basic problems in developing applications for mobile and ubiquitous computing, the class will focus on the use of languages (e.g., Java, C#) and middleware (e.g., CORBA, SOAP, WebServices and RMI) for developing mobile and cloud applications.

Weekly hours: 3 Lecture hours


CMPT 846.3: Software Maintenance and Evolution

This course aims to make students aware of the challenges inherent in the maintenance and evolution of software systems, and to provide a working understanding of some of the techniques and best practices currently in use for changing software safely, efficiently and in a cost effective way during the evolution.

Permission of instructor required.


CMPT 851.3: Parallel Programming for Scientific Computing

Despite the advances in computing technology, we continue to need greater computing power to address important scientific questions. Because individual processors have reached their performance limits, the need for greater computing power can only be met through parallel computers. This course is intended for students interested in taking advantage of parallel and distributed computing by writing parallel code for processor-intensive applications to be run on clusters, the cloud, or shared infrastructure such as that provided by Compute Canada. The objectives of this course are to give the students an understanding of how they can use parallel computing in their research and enable them to write parallel code for their applications. Extensive use of practical examples from scientific computing will be made. The programming languages used will be Matlab and Fortran or C. Both the shared and distributed paradigms of parallel computing will be covered via the OpenMP and MPI libraries.

Weekly hours: 3 Lecture hours
Permission of the Instructor is required.
Note: Undergraduate courses in Basic Numerical Analysis and Computer Programming are recommended.


CMPT 856.3: Topics in Software Engineering

Concerned with tools, methods, methodologies, and standards in the software engineering of conventional information systems, hypermedia and multimedia systems, and knowledge-based systems. Topics are to be selected from the following: requirements specification methodologies, object oriented design; process modeling; CASE environments and standards; software testing, validation, metrics and quality assurance; reverse engineering; shells for knowledge-based systems; second generation expert systems; knowledge acquisition; and human-computer interfaces.

Weekly hours: 1.5 Lecture hours and 1.5 Seminar/Discussion hours and 1.5 Practicum/Lab hours
Prerequisite(s): CMPT 816 or 826 or equivalent.


CMPT 857.3: Readings in Bioinformatics

Reviews and discusses recent advances and issues in Bioinformatics through paper presentation by students. Topics will range from computational biology and genomics to artificial life and biological computation. Students will be evaluated based on their presentations, literature reviews, and participation, as well as an optional small project.

Weekly hours: 3 Lecture hours and 1.5 Practicum/Lab hours
Prerequisite(s): Open to students in computer science, life sciences, and natural sciences, but subject to permission of the instructors.


CMPT 858.3: Topics in Modeling and Operations Research

In-depth coverage of recent research areas from Operations Research, and applications to system modeling. Advanced topics from mathematical programming, queuing theory, inventory control, simulation, Markov modeling, and simulation.

Weekly hours: 3 Lecture hours


CMPT 865.3: Advanced Parallel and Distributed Systems

Concerns selected design issues in distributed and parallel computer systems, particularly those most relevant to the goal of achieving high performance. In the parallel systems areas, such design issues arise in operating systems, run-time support software, compilers, and architecture. Topics concerning distributed systems may include interprocess communications, file systems, and load sharing, with emphasis on support for advanced parallel or multimedia applications.

Weekly hours: 3 Lecture hours
Prerequisite(s): Previous course in operating systems; CMPT 815; or equivalent.


CMPT 866.3: Topics in Human Computer Interaction

Topics studied may include the analysis and design of human-computer interaction, user interface objects and tool kits, intelligent user interfaces and user modeling, adaptive system design, human-computer interaction standards, and computers in society.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 481 or CMPT 811 or permission of instructor.
Note: Students may take this course more than once for credit, provided the topic covered in each offering differs substantially. Students must consult the department to ensure that the topics covered are different.


CMPT 867.3: Affective Computing

Affective Computing is computing that relates to, arises from, or deliberately influences emotion. In this course, we focus on computational methods for sensing user emotion, approaches for adapting computer systems based on emotional state, and human-computer interfaces for expressing emotion.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 481/811 or equivalent.


CMPT 868.3: Social Computing

Covers a variety of topics related to the emerging area of Social Computing and Participative Web. It will discuss theories, technologies and human issues of Web 2.0: how people network online, what networks and communities they form, why they participate and contribute, and how to design infrastructures for successful social applications.

Weekly hours: 3 Lecture hours
Formerly: CMPT 898
Permission of the instructor is required
Prerequisite(s): Experience in web programming or web-based information systems


CMPT 873.3: Adaptive Systems and Personalization

Research issues in adaptive systems are examined, including: user modelling, cognitive diagnosis, data mining, representations of context and affect, personal agents, collaborative filtering, group modelling, scrutability, and privacy. Issues will be explored in the context of applications such as e-learning, e-commerce, adaptive hypermedia, information systems, and recommender systems.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 812 or permission of the instructor.


CMPT 874.3: Construction of Computational Casual Models

A mathematical language for causation and its relation to probability. Philosophical background. Pearl's causal variables, SGS models, and construction of models from data. Shafer's Causal events. Perception of causality from Michotte to the present. The metaphysics of Cheng models and their application. Actual causation. Visualizing causal models.

Weekly hours: 3 Lecture hours and 2 Practicum/Lab hours
Prerequisite(s): CMPT 812 or permission of the instructor.


CMPT 876.3: Image and Animation Synthesis

An advanced course in computer graphics, concentrating on techniques for synthesizing images and animations. Physical simulation for animation. Procedural modeling and texture synthesis. Data-driven computer graphics, including motion capture, image-based rendering and model acquisition. Further alternatives to traditional image formation methods, such as non-photorealistic rendering and point-based rendering.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 829 or CMPT 485.


CMPT 880.3: Research Methods and Topics I

An introduction to research methods and research topics in computer science. Selected topics are researched under the direct supervision of faculty members, and reports on the outcome of this research are given in both oral presentations and in written papers. Required of all students in the M.Sc. program.

Weekly hours: 1.5 Lecture hours
Prerequisite(s): Admission to the M.Sc. program in computer science.


CMPT 890.3: Research Methods and Topics II

Research methods and research topics in computer science. Selected topics are researched under the direct supervision of faculty members, and reports on the outcome of this research are given in both oral presentations and in written papers. Topics are more difficult than in CMPT 880 and more in-depth research is expected. Required of all students in the Ph.D. program.

Weekly hours: 1.5 Lecture hours
Prerequisite(s): Admission to the Ph.D. program in computer science.


CMPT 898.3: Special Topics

These courses are offered occasionally by visiting faculty and in other special situations. Students interested in these courses should contact the department for more information.


CMPT 899.N/A: Special Topics

Offered occasionally by visiting faculty and in other special situations. Students interested in these courses should contact the department for more information.


CMPT 910.15: Research Internship

A student makes full-time formal or practical contributions to a research program in an unfamiliar environment. This course may be taken by a student from another institution working here, or by students from this institution working in an industrial or academic research program.

Weekly hours: 40 Practicum/Lab hours


CMPT 990.N/A: Seminar

All graduate students are required to register and regularly attend and participate in the department seminar series throughout their period of residence. Ph.D. students are required to present a seminar based on their own research.


CMPT 992.0: Research Project

This course is a supervised graduate project in Computer Science. It is available only to students from other universities who are completing part of their program requirements at the U of S. There is no Project Option available for the University of Saskatchewan graduate programs in Computer Science.

Note: Visiting students in a joint program must register in this course. It consists of independent study and investigation of a real world problem, and submission of an acceptable report on the problem studied.


CMPT 994.N/A: Research

Students writing a Master's thesis must register for this course.


CMPT 996.N/A: Research

Students writing a Ph.D. thesis must register for this course.