Note: Not all courses described below are offered each year. For a list of course offerings in current academic year, please consult the class search website.

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.

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.

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.

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.

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.

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.

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

CMPT 820.3

Topics in Learning and Intelligence 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

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

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

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 823.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.

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.

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.

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.

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.

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.

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.

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.

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 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

Topics in Modeling and Operations Research

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.

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.

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 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.

Formerly: CMPT 898

Permission of the instructor is required

Prerequisite(s): Experience in web programming or web-based information systems

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.

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.

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.

Prerequisite(s): Admission to the Ph.D. program in computer science.

CMPT 898.3

Special Topics

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

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.