This Course and Program Catalogue is effective from May 2024 to April 2025.

Not all courses described in the Course and Program Catalogue are offered each year. For a list of course offerings in 2024-2025, 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


36 Results

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 813.3: Advanced Modelling and Algorithms on Biological Systems

This course focusses on mathematical and computational modelling of various real-world processes, with the main focus on biological systems. Using discrete models, algorithmic strategies will be explored including exact algorithms, approximation algorithms, heuristic algorithms, and randomized algorithms. The algorithms and models used will involve sets, graphs, strings, trees, and machines. For each algorithmic technique, we will study applications from biological systems and bioinformatics, including biomolecule string matching, sequence alignment, sequence assembly, compression, read mapping, stochastic modelling, and genome rearrangement. A class project will test the implementation or study of a model/algorithm.

Weekly hours: 3 Lecture hours
Prerequisite(s): An undergraduate course in algorithms (such as CMPT 360) is recommended.
Note(s): This course is a hybrid course with CMPT 451, and cannot be taken for credit after previously taking CMPT 451.


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 827.3: Cognitive Scientific Approaches to AI

A discussion of cognitive scientific approaches to Artificial Intelligence. Examples of topics include genetic algorithms, complex adaptive systems, classifier systems, multi-agent systems, and their philosophical underpinnings.

Prerequisite(s): CMPT 317.3 or equivalent.


CMPT 828.3: Advanced Deep Learning

A survey of Deep Learning research topics in computer vision and data science. Deep learning techniques may include Deep Neural Networks, Convolutional Neural Networks, Recurrent Networks, Deep Generative Models and Reinforcement Learning. Application domains will focus on computer vision problems, including image classification, object detection and image segmentation. Additional application domains relevant to graduate students taking the course will be included. Software tools will be introduced for practical application.

Weekly hours: 3 Seminar/Discussion hours
Note: Instructor approval required. Students may not receive credit for both CMPT 489 and CMPT 828.


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): Open to students in computer science, life sciences, and natural sciences, but subject to permission of the instructor.


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 838.3: Foundations of 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 vulnerability discovery and exploitation, malicious code analysis, network traffic interception and manipulation, reconnaissance and information gathering, social engineering, intrusion detection and prevention. This is a hands-on course that gives students an opportunity to assesses current security threats and their countermeasures, explore recent advancements in computer security.

Weekly hours: 3 Seminar/Discussion hours
Note: Students may not receive credit for both CMPT 438 and CMPT 838.


CMPT 839.3: Foundations of Software 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
Note: This course is a hybrid course with CMPT 439, and this course cannot be taken for credit after previously taking CMPT 439.


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 854.3: Empirical Software Engineering

Experimentation is important in the software engineering discipline to build a corpus of knowledge based on empirical studies. This course will explore different methods for designing and conducting empirical studies in software engineering. It will cover the various steps of conducting a research project including identifying a research problem, critically review the existing body of literature pertaining to the research area, formulating research questions, collecting, analyzing and interpreting data, building models, assessing validity and reporting the results. In this course, we will evaluate different research methods such as case studies, surveys, grounded theory, ethnographies, and experiments among others.

Weekly hours: 3 Seminar/Discussion hours


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
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
Permission of the instructor is required
Prerequisite(s): Experience in web programming or web-based information systems


CMPT 870.3: Foundations of Game User Research

This course teaches students the fundamental skills necessary to evaluate play experience, generate actionable insights, and report and communicate relevant findings. A foundational introduction to games user research (GUR), this course is an introductory class of interest to students interested in games evaluation or research. Evaluation processes, pipelines, and methodologies (including expert evaluation, qualitative and quantitative methods with users, and data analytics) will be covered. Professional skills (e.g., communication, listening, reporting) will be introduced.

Weekly hours: 3 Lecture hours


CMPT 885.3: Human Centric Software Renovation

An advanced course in software engineering that explores human aspects of redesigning, renovating, and maintaining large complex software systems, including topics in collaboration in software engineering, computer-supported cooperative work, provenance and workflow support in scientific software systems, software comprehension, and software renovation and restructuring, and usability engineering.

Weekly hours: 3 Lecture hours
Note(s): Students with credit for CMPT 898: Human Centric Software Renovation may not take this class for credit.


CMPT 886.3: Research Methods I

Senior undergraduate students will work on an introductory research project in an advanced area of computer science under the supervision of a faculty member specializing in the area. Students will be introduced to the research methodology used in the area, and apply that methodology towards a novel research project. They will communicate this research in writing and presentation.

Weekly hours: 3 Seminar/Discussion hours
Restriction(s): Only available to be taken by undergraduate students in a 4-year Honours program in either Computer Science, Software Engineering Option, or Applied Computing at the University of Saskatchewan, in at least their third year. Permission of the instructor required. Not available to be taken by graduate students. This course cannot be used towards satisfying any undergraduate program requirements and can only be used to satisfy course requirements of the MSc in Computer Science program.


CMPT 887.3: Research Methods II

Senior undergraduate students will work on a research project in an advanced area of computer science under the supervision of a faculty member specializing in the area. Students will apply advanced research methodologies used in the area, and apply that methodology towards a novel research project. They will communicate this research in both formal scientific writing and in presentation, with a focus on developing scientific writing towards writing papers.

Weekly hours: 3 Seminar/Discussion hours
Prerequisite(s): Requires 80% in CMPT 886. Only available to be taken by undergraduate students in a 4-year Honours program in either Computer Science, Software Engineering Option, or Applied Computing at the University of Saskatchewan, in at least their fourth year. Permission of the instructor required. Not available to be taken by graduate students. This course cannot be used towards satisfying any undergraduate program requirements and can only be used to satisfy course requirements of the MSc in Computer Science program.


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.