This Course and Program Catalogue is effective from May 2015 to April 2016.

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

For general registration information, please visit students.usask.ca.

As of 2005-2006, certain course abbreviations have changed. Students with credit for a course under its former label may not take the relabeled course for credit.

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

The following term designations are used:

  • 1 - Term 1 only
  • 2 - Term 2 only
  • 3 - Term 3 only
  • 1&2 - Term 1 and 2
  • 1/2 - Either Term 1 or Term 2
  • P - Phases (Medicine and Dentistry)
  • Q - Quarters (Veterinary Medicine)

The following instructional code designations are used:

  • L - Lecture
  • P - Practicum/Lab
  • S - Seminar/Discussion
  • C - Clinical Service
  • R - Reading
  • T - Tutorial

Please use the following form to look up courses and find detailed information on course prerequisites, corequisites, and other special notes. To view all 100-level courses in a subject, select a Subject Code and type 1% in the Course Number field. (200-level = 2%, etc.)


Results

CMPT 002.0
MITACS Globalink Undergraduate Visiting Research

CMPT 100.3 — 1/2(3L-1.5T)
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.

Prerequisite(s): Mathematics A30 or B30 or C30; or Foundations of Mathematics 30; or Pre-Calculus 30.
Note: After CMPT 100, students can take any of 105 and 111. Students can receive credit for only one of CMPT 100, CMPT 102, CMPT 120, CMPT 175. Students may not take CMPT 100 for credit after taking CMPT 105. Also, students may not take CMPT 100 for credit concurrent with or following CMPT 115 or CMPT 117. Students wishing to major in computer science are advised to take CMPT 111. In addition, students majoring in computer science may not use CMPT 100 as a course in their major, but may count it as a junior elective as long as CMPT 100 is taken before CMPT 115 or CMPT 117.


CMPT 105.3 — 1(3L-1.5T)
Introduction to Computing and Interactive Systems Design

Introduction to ideas and concepts in computer science and the design of interactive systems. Concepts in computing such as algorithms, problem solving, and programming are explored using interactive multimedia systems as the focus. Basic concepts in design and interaction, such as the interaction cycle, event-based behaviour, and prototyping are introduced.

Note: CMPT 105 can be taken as a science course by non-science majors. Science majors may not receive science credit for this course. CMPT 105 can be taken for credit after the completion of CMPT 100, 102, 120 or 175; but CMPT 100, 102, 120 and 175 cannot be taken for credit after completion of CMPT 105. CMPT 105 cannot be taken for credit after CMPT 111.


CMPT 106.3 — 2(3L-1.5T)
Design and Construction of Games and Interactive Systems

Introduces additional basic concepts in computer science and interaction design, building on the algorithmic foundation of CMPT 105, and adding topics such as representation of data, use of expressions, development of subprograms, and creation and manipulation of graphical images. Design topics include consideration of narrative, game rules, collaboration, and animation.

Prerequisite(s): CMPT 105 or CMPT 111.
Note: Students cannot take CMPT 106 for credit after CMPT 115.


CMPT 111.3 — 1/2(3L-1T)
Introduction to Computer Science and Programming

Introduces basic concepts of computer science through the study of traditional elementary programming, object-oriented programming, debugging, design of objects, and standard algorithms with their analysis.

Prerequisite(s): Mathematics B30 or Foundations of Mathematics 30 or Pre-Calculus 30.
Note: While designed for students majoring in Computer Science or Bioinformatics, this course is open to all students seeking a solid introduction to computing. Students may receive credit for only one of CMPT 111, CMPT 113 or CMPT 116.


CMPT 113.3 — 1/2(3L-1.5P)
Computing Using Excel and VBA

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.

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 115.3 — 2(3L-1.5T)
Principles of Computer Science

Introduces more of the basic concepts of computer science and object-oriented software development with an emphasis on fundamental data structures (lists, stacks, queues, trees) and associated algorithms. This course includes recursion, abstract data types and selected topics exploring some of the breadth of computer science.

Prerequisite(s): CMPT 106 or 111.
Note: Students can have credit for at most one of CMPT 115 and 117. Students may not take CMPT 100, 102, 106, 120 or 175 for credit concurrently with or after CMPT 115.


CMPT 116.3 — 1(3L-1.5P)
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.

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 117.3 — 2(3L-1.5P)
Computing II

Continues the development of programming skills started in CMPT 116, with an emphasis on object-oriented programming. Data structures for the storage and efficient retrieval of information will be studied and analyzed, in particular stacks, queues, linked lists and simple binary trees. Examples and exercises will be drawn from engineering applications and numerical methods.

Restriction(s): Restricted to students in College of Arts and Science and College of Engineering.
Prerequisite(s): CMPT 116, or a grade of at least 75% in CMPT 113 and permission of the instructor.
Note: Students can have credit for at most one of CMPT 117 and 115. Students may not take CMPT 100, 102, 106, 120 or 175 for credit concurrently with or after CMPT 117.


CMPT 120.3 — 1/2(3L-1.5P)
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.

Note: CMPT 120 is a course in modern computer skills, but does not lead directly into a computer science major. After CMPT 120, students can take any of CMPT 105 and 111. Students can receive credit for only one of CMPT 100, 102, 120, or 175. Students may not take CMPT 120 for credit after taking CMPT 105. Students may not take CMPT 120 for credit concurrent with or following CMPT 115 or CMPT 117. Students wishing to major in computer science are advised to take CMPT 111. In addition, students majoring in computer science may not use CMPT 120 as a course in the major, but may count it as a junior elective as long as CMPT 120 is taken before CMPT 115 or CMPT 117.


CMPT 175.3 — 1/2(3L-1.5T)
Introduction to Computer Science for Business Students

Provides an overview of significant technical and social issues in information technology, including computer and social networking, eBusiness, new media, and artificial intelligence. The focus is on business systems examples, issues, constraints and opportunities, while introducing practical algorithmic problem solving.

Restriction(s): Only open to students enrolled in the Edwards School of Business
Note: After CMPT 175, students can take any of 105, 111, or 275, but the usual course is CMPT 275. Students can receive credit for only one of CMPT 100, CMPT 102, CMPT 175. Students may not take CMPT 175 for credit after taking CMPT 105. Also, students may not take CMPT 175 for credit concurrent with or following CMPT 115 or CMPT 117. Students wishing to major in computer science are advised to take CMPT 111. In addition, students majoring in computer science may not use CMPT 175 as a course in their major, but may count it as a junior elective as long as CMPT 175 is taken before CMPT 115 or CMPT 117.


CMPT 214.3 — 1(3L-2P)
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.

Prerequisite(s): CMPT 115 or 117; and one of MATH 104, MATH 110, MATH 121, MATH 123, MATH 125, or STAT 245 (or equivalent).
Note: Students who have credit for CMPT 330 may not take this course for credit.


CMPT 215.3 — 2(3L-1.5T)
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.

Prerequisite(s): CMPT 214.
Note: A student cannot receive credit for more than one of CMPT 215, EE 331, or CME 331.


CMPT 260.3 — 1(3L-1.5T)
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.

Prerequisite(s): CMPT 115 or 117, and MATH 110.


CMPT 270.3 — 1(3L-1.5T)
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.

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


CMPT 275.3 — 1(3L)
Organizational Information Systems

Studies the development of information systems in organizations/businesses. The life cycle of information systems is used as a framework for studying the management and control of information, and the evaluation of opportunities for improving information systems and integrating them into organizations.

Prerequisite(s): Any one of CMPT 100, 102, 105, 111, 113, 116, or 175.
Note: Students with credit for CMPT 250, 355 or 370 cannot take CMPT 275 for credit. CMPT 275 can only be used as a general elective in a Computer Science major.


CMPT 280.3 — 2(3L-1.5T)
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; direct and Btree files; and sorting algorithms.

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 — 1(3L-1P)
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.

Prerequisite(s): 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 — 1/2(3L)
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.



CMPT 299.6 — 1&2(3L)
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.



CMPT 306.3 — 1/2(3L-1.5T)
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.

Prerequisite(s): CMPT 270. MATH 264 or MATH 266 are recommended.


CMPT 317.3 — 2(3L-1T)
Introduction to Artificial Intelligence

A survey of Artificial Intelligence techniques and underlying theory. Topics include problem solving and planning, knowledge representation techniques, reasoning engines and expert systems, and a tour of various application areas of Artificial Intelligence including machine learning, natural language processing and high-level computer vision.

Prerequisite(s): CMPT 260 and 280.


CMPT 332.3 — 1/2(3L-1P)
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.

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 — 1/2(3L-1T)
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.

Prerequisite(s): CMPT 214, 260, and 270.
Note: One of CMPT 215 or CME 331 recommended.


CMPT 350.3 — 2(3L-1.5T)
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.

Prerequisite(s): CMPT 280.


CMPT 352.3 — 2(3L)
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.

Prerequisite(s): CMPT 270 or CMPT 275.


CMPT 355.3 — 2(3L-1T)
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: recovery and concurrency, integrity and security, query optimization, normalization, and semantic modelling. Additional topics include multimedia databases and other paradigms.

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 — 1(3L)
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.

Prerequisite(s): CMPT 260 and 280, 6 credit units in 200-level MATH or STAT (excluding MATH 213 and STAT 244).


CMPT 364.3 — 3L
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 6 credit units in 200-level MATH or STAT.


CMPT 370.3 — 1(3L-1.5T)
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.

Prerequisite(s): CMPT 214 and 270.


CMPT 371.3 — 2(3L-1.5P-1.5T)
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.

Prerequisite(s): CMPT 370.
Prerequisite(s) or Corequisite(s): CMPT 280.


CMPT 381.3 — 2(3L-1P)
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.

Prerequisite(s): CMPT 270


CMPT 394.3 — 2(3L)
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.

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


CMPT 398.3 — 1/2(3S)
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.

CMPT 399.6 — 1&2(3S)
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.

CMPT 400.3 — 1&2(1.5S)
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.

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 — 1&2(1.5P-1.5S)
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.

Permission of the department required.
Prerequisite(s): In the final year of an Honours Program; or in the final year of the Interactive Systems Design program; or a cumulative percentage average of at least 70% in 24 credit units in computer science.


CMPT 408.3 — 2(3L)
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.

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 — 3L
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 350.


CMPT 432.3 — 2(3L)
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.

Prerequisite(s): CMPT 332.


CMPT 433.3 — 2(3L)
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.

Prerequisite(s): CMPT 332.
Prerequisite(s) or Corequisite(s): One of CMPT 352, 432, 434.


CMPT 434.3 — 1/2(3L)
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.

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


CMPT 435.3 — 2(3L-1P)
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.

Prerequisite(s): CMPT 215 and 6 credit units from: CMPT 332, CMPT 340, CMPT 360.


CMPT 436.3 — 1(3L)
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.

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 440.3 — 2(3L)
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.

Prerequisite(s): CMPT 340.


CMPT 442.3 — 2(3L)
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.

Prerequisite(s): CMPT 360.
Note: CMPT 340 recommended.


CMPT 461.3 — 2(3L)
Intractable Problems and Models of Computation

Problems which have no known efficient solution are studied; exact inefficient algorithm design techniques are introduced, as are efficient approximation algorithms. NP-completeness proofs are developed as evidence of intractability. Part of the course is a rigorous and systematic introduction to models of computation via formal language theory.

Formerly: CMPT 361.
Prerequisite(s): CMPT 360 or 364.
Note: Students with credit for CMPT 361 may not take this course for credit.


CMPT 463.3 — 1/2(3L)
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.

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


CMPT 470.3 — 1(3L)
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.

Prerequisite(s): CMPT 370.


CMPT 479.3 — 2(3L)
Usability Engineering

Usability Engineering (UE) is 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. This course presents a requirements engineering (RE) approach to usability engineering by providing in depth coverage of the Putting Usability First.

Prerequisite(s): CMPT 370 or permission of instructor.


CMPT 480.3 — 2(3L)
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.

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


CMPT 481.3 — 1(3L)
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.

Prerequisite(s): CMPT 370 or CMPT 381.


CMPT 485.3 — 2(3L)
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.

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


CMPT 487.3 — 2(3L)
Image Processing and Computer Vision

Presents fundamental concepts in computer vision and image processing. Topics may include properties of digital images, digital image formats, image acquisition devices, edge detection, convolution filtering, image segmentation, shape representation, image compression, image morphology, spectral analysis, texture, object recognition, motion analysis and 3D interpretation.

Prerequisite(s): (MATH 264 or 266 or EE 216 or CE 318) and (CMPT 317 or CMPT 332 or CMPT 340 or CMPT 370).


CMPT 498.3 — 1/2(3S)
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.

CMPT 499.6 — 1&2(3S)
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.

CMPT 810.3 — 1/2(3L)
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.

CMPT 811.3 — 1(3L-1T)
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.

Prerequisite(s): CMPT 370 or permission of the instructor.


CMPT 815.3 — 1/2(3L)
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.

CMPT 816.3 — 1/2(3L)
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.

CMPT 817.3 — 1/2(3L)
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.

Permission of the instructor is required.


CMPT 819.3 — 1/2(3L)
Image Processing and Computer Vision

An introduction to image processing and computer vision, including coverage of topics such as the basics of image representation and manipulation, edge detection, image segmentation, photometric stereo and shape from shading, optical flow, and pattern recognition.

CMPT 820.3 — 1/2(3L)
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.

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 — 1/2(3L)
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.

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 — 1/2(3L)
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.

CMPT 826.3 — 1/2(3L-2P)
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.

CMPT 829.3 — 1/2(3L)
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.

CMPT 830.3 — 1/2(3L)
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.

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 831.3 — 1/2(3L)
Intractable Problems and Models of Computation

Problems with no known efficient solution are studied; exact inefficient algorithm design techniques are introduced as are efficient approximation algorithms. NP-Completeness proofs are developed as evidence of intractability. Part of the course is a rigorous and systematic introduction to models of computation via formal language theory.

Prerequisite(s):CMPT 360 or equivalent.Note:Students with credit for CMPT 461 may not take this course for credit.

CMPT 832.3 — 2(3L)
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.

Prerequisite(s): CMPT 332.

CMPT 835.3 — 2(3L-1P)
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.

Prerequisite(s): CMPT 260 and 332 or equivalent.

CMPT 840.3 — 1/2(3L)
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.

Permission of the instructor is required.


CMPT 842.3 — 1/2(3L)
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.

CMPT 846.3 — 3L
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 — 1/2(3L)
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.

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


CMPT 855.3 — 1/2(3L)
Computer Networks and Distributed Systems

Includes low-level protocols (e.g., channel access protocols), routing, flow control, congestion control, transport layer protocols, protocol performance, and network measurement and workload characterization. Of particular interest are high-speed networks, B-ISDN and ATM, fast-packet switching, and gigabit networking.

Prerequisite(s): Previous course in Networks.


CMPT 856.3 — 1/2(1.5L-1.5S-1.5P)
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.

Prerequisite(s): CMPT 816 or 826 or equivalent.


CMPT 857.3 — 1/2(3L-1.5P)
Readings in Bioinformatics

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

Prerequisite(s): Open to students in computer science, life sciences, and natural sciences, but subject to permission of the instructors.


CMPT 858.3 — 1/2(3L)
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.

CMPT 862.3 — 1/2(3L)
Multi Agent Systems

Models, methods and applications of Multi-Agent Systems (MAS). A study of topics selected from foundational as well as current research in Actors, Coordination, Distributed AI, Massively Multi-Agent Systems, Multi-Agent Simulation, Resource Bounded MAS and Software Engineering for MAS.

Prerequisite(s): CMPT 812 or equivalent.


CMPT 863.3 — 1/2(3L)
Topics in Functional Programming

Functional programming languages permit a wide variety of semantic definitions and a wide variety of implementation approaches. Explores selected topics in the semantics and/or implementation of these languages. May include: algebraic semantics, type theory, polymorphic type deduction, inheritance, graph reduction, data flow, systolic/wavefront arrays, and a variety of semantically sound optimization techniques.

Permission of instructor required
Prerequisite(s): CMPT 813 or equivalent.


CMPT 865.3 — 1/2(3L)
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.

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


CMPT 866.3 — 1/2(3L)
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.

Prerequisite(s): CMPT 481 or CMPT 811 or permission of instructor.


CMPT 867.3 — 1/2(3L)
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.

Prerequisite(s): CMPT 481/811 or equivalent.

CMPT 868.3 — 1/2(3L)
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.

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


CMPT 873.3 — 1/2(3L)
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.

Prerequisite(s): CMPT 812 or permission of the instructor.

CMPT 874.3 — 1/2(3L-2P)
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.

Prerequisite(s): CMPT 812 or permission of the instructor.

CMPT 876.3 — 1/2(3L)
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.

Prerequisite(s): CMPT 829.

CMPT 880.3 — 2(1.5L)
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.

Prerequisite(s): Admission to the M.Sc. program in computer science.


CMPT 890.3 — 2(1.5L)
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.

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
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 — 1/2(40P)
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.

CMPT 990
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
Research

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

CMPT 996
Research

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