Education > Graduate Students > The Curriculum

Graduate Curriculum (effective September 1, 2008)

1. Degrees Offered

The School of Computing Science offers programs leading to the M.Sc. (via either thesis or project) and Ph.D. degrees in Computing Science. It provides students with graduate studies in the following areas: artificial intelligence, bioinformatics, computer graphics & visualization, computer vision, databases & data mining, human computer interactions, computational logic, medical imaging, multimedia, natural language processing, network communications, programming languages, robotics, and software engineering.

2. Admission

To qualify for admission to the M.Sc. program, a student must satisfy the University admission requirements stated in section 1.3 of the Graduate General Regulations and must have a bachelor's degree or the equivalent in Computing Science or a related field.

To qualify for admission to the Ph.D. program, a student must satisfy the University admission requirements stated in section 1.3 of the Graduate General Regulations and

- have a master's degree or the equivalent in Computing Science or a related field; or

- have a bachelor's degree or the equivalent in Computing Science or a related field, with a cumulative grade point average of 3.5 (on a scale of 0.0 - 4.0) or the equivalent.

At its discretion, the school's Graduate Admissions Committee may offer either M.Sc. or Ph.D. admission to students applying to the Ph.D. program without a Master's degree or equivalent in Computing Science or a related field. Students enrolled in the M.Sc. program may apply to transfer to the Ph.D. program after two semesters in the M.Sc. program; the school's evaluation procedure for such applications is the same as that used for outside applicants.

To view the Graduate General Regulations, go to the SFU Calendar and search for "Graduate General Regulations" in the Table of Contents. You get to this by clicking on the blue "TOC" button near the top of the page.

3. Breadth and Course Requirements

For purposes of defining the M.Sc. and Ph.D. breadth requirements, courses are grouped into five breadth areas in Section 8. Any courses taken outside that list (e.g., those listed under Special Courses, or courses from outside the School of Computing Science) must be approved by the student's senior supervisor and the director of the graduate program.

The courses used to satisfy the breadth requirements must include either CMPT 705 or CMPT 710, unless the student already has credit for one of these courses (or equivalent) from a previous degree as determined by the graduate program breadth committee.

Only two Special Topics courses (two of CMPT 829, 881-888, none of CMPT 880, 889) may be used towards satisfaction of breadth requirements, except with permission of the graduate program breadth committee.

The course requirements for the M.Sc. (see Section 6.1) and Ph.D. (see Section 7.1) degrees each have a distribution requirement to ensure breadth across the breadth areas defined in Section 8. This requirement specifies the number of courses selected from each of the five breadth areas.

4. Supervisory Committees

A supervisory committee, at either the M.Sc. or Ph.D. level, consists of the student's senior supervisor, at least one other computing science faculty member, and others (typically faculty) as appropriate. The choice of senior supervisor should be made by mutual consent of the graduate student and faculty member based on commonality of research interests. The student and senior supervisor should consult on the remainder of the committee members.

Graduate General Regulations, Section 1.6 specifies that a senior supervisor be appointed normally no later than the beginning of the student's third semester in the program, and that the remainder of the supervisory committee be chosen normally in the same semester in which the senior supervisor is appointed.

5. Research Topics Seminars

The research topics seminar series, CMPT 891-3, is presented each year by faculty and graduate students to acquaint new graduate students with the research interests of the faculty, and to introduce students to issues relevant to their graduate studies. All graduate students are required to take CMPT 891-3 in the first year of graduate study at SFU.

6. M.Sc. Program

Students are expected to acquire breadth of knowledge through a sequence of courses and depth of knowledge through completion and defense of a thesis or a project. Under normal circumstances, an M.Sc. program should be completed within six semesters. An M.Sc. student must choose between thesis and project options by the end of the second semester. Any change in option thereafter must be approved by the graduate program committee.

6.1. Breadth Requirement

Thesis M.Sc. students must complete a breadth requirement consisting of five graduate courses (which is equivalent to 15 credit hours of work). At least four of the courses must be drawn from courses listed in the five breadth areas, such that at least one course must be from Area I: Algorithms and Complexity Theory, and two of the four courses must be from two other areas.

Project M.Sc. students must complete a breadth requirement consisting of eight graduate courses (which is equivalent to 24 credit hours of work). At least six of the courses must be drawn from courses listed in the five breadth areas, such that at least one course must be from Area I: Algorithms and Complexity Theory, and such that the six courses cover at least three different areas.

Any 700 level course used to satisfy the M.Sc. breadth requirement might be waived and replaced by an 800 level course. In such cases, the student must produce convincing evidence to the graduate program committee that they have taken a comparable course or has comparable training in industry. Any courses taken outside the School of Computing Science must be approved by the student's senior supervisor and the graduate breadth committee.

6.2. Depth Requirement

Thesis M.Sc. students are required to demonstrate depth of knowledge in their research area through a thesis seminar and defense based on their independent work. Students should consult with members of their supervisory committee, and formulate and submit a written thesis proposal for approval. This should not be done any later than the end of the third term semester.

Project M.Sc. students must choose an area of specialization and submit a project report. Project topics may include a comprehensive survey of the literature of some computing science related research areas; implementation and evaluation of existing techniques/algorithms; development of interesting software/hardware applications.

Regulations specifying the examining committee's composition and procedures for the final thesis or project exam appear in the Graduate General Regulations.

7. Ph.D. Program

Students in the Ph.D. program are required to demonstrate breadth of knowledge as outlined below and demonstrate the capacity to conduct original research through the completion and defense of an original thesis. Under normal circumstances a Ph.D. degree should be completed within 12 semesters and should not require longer than 15 semesters.

7.1. Breadth Requirement

Ph.D. students already having an M.Sc. in computing science or related field must complete a breadth requirement consisting of four graduate courses (which is equivalent to 12 credit hours of graduate course work). At least three of the courses must be drawn from courses listed in the five breadth areas, such that they are all in different areas.

Ph.D. students not already having an M.Sc. in computing science or related field must complete a breadth requirement consisting of eight graduate courses (which is equivalent to 24 credit hours of graduate course work). At least six of the courses must be drawn from courses listed in the five breadth areas, such that at least one course must be from Area I: Algorithms and Complexity Theory, and such that the six courses cover at least three different areas.

A Ph.D. student must achieve a minimum CGPA of 3.4 and passing marks in all courses.

7.2. Depth Requirement

Ph.D. students demonstrate depth of knowledge in their research area through a public depth seminar and oral examination, to give a thesis proposal seminar, and submit and defend a thesis based on their independent work which makes an original contribution to computing science.

7.2.1. Depth Examination

The depth seminar and examination may be scheduled at any time following the completion of breadth requirements. Typically this is between the fifth and seventh semester in the Ph.D. program; a recommendation is made by the Graduate Breadth Evaluation Committee, in proportion to the amount of course work required to satisfy the breadth requirement. The examining committee consists of the supervisory committee and one or two additional examiners recommended by it and approved by the Graduate Program Committee. The exam centres on the student's research. The examining committee, in consultation with the student, specifies the topics in the examination. The student prepares a written survey and gives a public depth seminar; the oral examination follows, and then the committee meets to evaluate the student's performance in the program to that point. The committee's evaluation is diagnostic, specifying additional work in weak areas if such exists. A second depth examination or withdrawal from the program may be recommended in extreme cases.

7.2.2. Thesis Proposal

The student, in consultation with her/his supervisory committee, formulates and submits, for approval, a written thesis proposal consisting of a research plan and preliminary results. The student gives a seminar and defends the originality and feasibility of the proposed thesis to the supervisory committee. The thesis proposal is normally presented and defended within three semesters of the depth examination.

7.2.3. Thesis Defense

Regulations specifying the examining committee composition and procedures for final public thesis defence are in sections 1.9 and 1.10 of the Graduate General Regulations. Ph.D. students give a seminar; typically this will be about their thesis research and is presented in the interval between distribution of the thesis to the committee and the defense .

8. Graduate Courses

Area I - Algorithms and Complexity Theory

CMPT 701-3 Computability and Logic

Deep connections between logic and computation have been evident since early work in both areas. More recently, logic-based methods have led to important progress in diverse areas of computing science. This course will provide a foundation in logic and computability suitable for students who wish to understand the application of logic in various areas of CS, or as preparation for more advanced study in logic or theoretical CS.

CMPT 705-3 Design and Analysis of Algorithms

The objective of this course is to expose students to basic techniques in algorithm design and analysis. Topics will include greedy algorithms, dynamic programming, advanced data structures, network flows, randomized algorithms.

CMPT 710-3 Computational Complexity

This course provides a broad view of Theoretical Computing Science with an emphasis on complexity theory. Topics will include a review of formal models of computation, language classes, and basic complexity theory; design and analysis of efficient algorithms; survey of structural complexity including complexity hierarchies, NP-completeness, and oracles; approximation techniques for discrete problems.

CMPT 711-3 Bioinformatics Algorithms

Fundamental algorithmic techniques used to solve computational problems encountered in molecular biology. This area is usually referred to as Bioinformatics or Computational Biology. Students who have taken CMPT 881-3 Special Topics in Theoretical Computing Science - Bioinformatics Algorithms may not take CMPT 711-3 for additional credit.

CMPT 813-3 Computational Geometry

This course covers recent developments in discrete, combinatorial, and algorithmic geometry. Emphasis is placed on both developing general geometric techniques and solving specific problems. Open problems and applications will be discussed.

CMPT 814-3 Algorithmic Graph Theory

Algorithm design often stresses universal approaches for general problem instances. If the instances possess a special structure, more efficient algorithms are possible. This course will examine graphs and networks with special structure, such as chordal, interval, and permutation graphs, which allows the development of efficient algorithms for hard computational problems.

CMPT 815-3 Algorithms of Optimization

This course will cover a variety of optimization models that naturally arise in the areas of Management Science and Operations Research and can be formulated as mathematical programming problems.

CMPT 881-3 Special Topics in Theoretical Computing Science

Area II - Networks, Software Engineering, and Systems

CMPT 730-3 Programming Languages

This course will cover basic concepts in the area of programming languages. The course will be largely of a theoretical nature and will concentrate on fundamental concepts of lasting importance, rather than topics of current interest.

CMPT 731-3 Functional Programming (previously CMPT 831)

This course will cover functional programming including introduction to a functional programming language, program transformation and verification, implementation of functional programming languages, and other selected topics which may include parallel evaluation of functional programs, analysis of performance, and advanced applications.

CMPT 745-3 Software Engineering

This course examines fundamental principles of software engineering and state-of-the-art techniques for improving the quality of software designs. With an emphasis on methodological aspects and mathematical foundations, the specification, design and test of concurrent and reactive systems is addressed in depth. Students learn how to use formal techniques as a practical tool for the analysis and validation of key system properties in early design stages. Applications focus on high level design of distributed and embedded systems.

CMPT 755-3 Compiler Theory (previously CMPT 830)

Theory Precedence, LL(k), LR(k) grammars; SLR(k), LALR(k), L(m)R(k) and LR(k) parsing techniques, transduction grammars; general compiler organization, code generation and optimization; memory allocation for object programs; garbage collection.

CMPT 760-3 Operating Systems

This course will discuss design issues relating to the functionality and performance of modern workstation operating systems, such as methods for sharing memory, file and data objects, and choice of communication protocols. The special needs of high-performance multiprocessor systems and real-time systems will also be addressed.

CMPT 765-3 Computer Communication Networks

This course will cover the fundamentals and recent advances in computer communication networks. The emphasis will be on the design and analysis of networks, especially switching, routing, and network topology.

CMPT 771-3 Internet Architecture and Protocols

Investigates the design and operation of the global network of networks: the Internet. This course studies the structure of the Internet and the TCP/IP protocol suit that enables it to scale to millions of hosts. The focus is on design principles, performance modeling, and services offered by the Internet.

CMPT 777-3 Formal Verification

Real software systems are extremely complex. In the software industry, formal verification methods are increasingly used to verify that software systems satisfy their requirements. The course concentrates on contemporary applications of logic to the verification of software systems. The objective is to introduce, at an accessible level, a mathematical framework for symbolic model checking, one of the most important verification methods. The techniques are illustrated with examples of verification of reactive systems and communication protocols. Students learn to work with the model checking tool SMV.

CMPT 816-3 Theory of Communication Networks

This course investigates the design, classification, modeling, analysis, and efficient use of communication networks such as telephone networks, interconnection networks in parallel processing systems, and special-purpose networks.

CMPT 885-3 Special Topics in Computer Architecture

CMPT 886-3 Special Topics in Networks, Software and Systems (previously: Special Topics in Operating Systems)

Area III - Artificial Intelligence

CMPT 721-3 Knowledge Representation and Reasoning

The clear representation of knowledge and reliable reasoning mechanisms are at the core of intelligent programs. To be efficient, knowledge representation has to be succinct yet comprehensible. Reliable reasoning not only involves accuracy but also intuitiveness and commonsense appeal. This course covers approaches to representing knowledge symbolically in a form suitable for automated reasoning, and associated reasoning methods. Topics include a review of first-order logic, entailment, and the resolution method, along with other topics such as Horn clauses, procedural representations, description logics, inheritance networks, defaults and probabilities, tractable reasoning, abductive explanation, and the representation of action and planning. If time permits, additional topics will be covered depending on class interest.

CMPT 725-3 Logical Methods in Computational Intelligence

This course will provide an overview and in-depth introduction on several new developments in computational logic for intelligent systems. In particular, we shall cover three areas of strategic importance: natural language processing, abductive logic programming and constraint-based logic programming. The purpose is to introduce graduate students to the frontiers of computational logic research and applications. Students of various backgrounds, such as Linguistics and Cognitive Sciences, are most welcome. Some of the course will proceed in seminar style. Students should be prepared to read and present papers and to participate in discussions.

CMPT 726-3 Machine Learning

Machine Learning is the study of computer algorithms that improve automatically through experience. Provides students who conduct research in machine learning, or use it in their research, with a grounding in both the theoretical justification for, and practical application of, machine learning algorithms. Covers techniques in supervised and unsupervised learning, the graphical model formalism, and algorithms for combining models.

CMPT 823-3 Formal Topics in Knowledge Representation

This course surveys current research in formal aspects of knowledge representation. Topics covered in the course will centre on various features and characteristics of encodings of knowledge, including incomplete knowledge, nonmonotonic reasoning, inexact and imprecise reasoning, metareasoning, etc. Suggested preparation: a course in formal logic and a previous course in artificial intelligence.

CMPT 825-3 Natural Language Processing

In this course, theoretical and applied issues related to the development of natural language processing systems are examined. Investigations into parsing issues, different computational linguistic formalisms, natural language syntax, semantics, and discourse related phenomena will be considered and an actual natural language processor will be developed.

CMPT 826-3 Automated Learning and Reasoning

This course covers topics, which are shared both by AI and Cognitive Science. Current AI research papers are examined from the perspective of Cognitive Science, and vice-versa. Topics covered in a given semester will vary, depending on the instructor, but most of the following topics will be addressed in any given semester: connectionist models of intelligence; "human-like" automated deduction; reasoning by analogy; topics in natural language; automated concept learning; and computational approaches to semantics. Prerequisites: At least one graduate or undergraduate AI course, or instructor's permission.

CMPT 827-3 Intelligent Systems

Intelligent Systems are knowledge-based computer programs, which emulate the reasoning abilities of human experts. This introductory course will analyse the underlying Artificial Intelligence methodology and survey advances in rule-based systems, constraint solving, incremental reasoning, intelligent backtracking and heuristic local search methods. We will look specifically at research applications in intelligent scheduling, configuration and planning. The course is intended for graduate students with a reasonable background in symbolic programming.

CMPT 882-3 Special Topics in Artificial Intelligence

Area IV - Databases, Data Mining, and Computational Biology

CMPT 505-3 Problem Based Learning in Bioinformatics

The problem-based learning course will develop students’ ability to exchange ideas in small groups focused on real but simplified problems in bioinformatics. Problems will be carefully selected to cover all aspects of bioinformatics research. Prerequisites: Enrolled in Graduate Diploma in Bioinformatics. This course is identical to MBB 505 and students can not take both courses for credit.

CMPT 740-3 Database Systems

Introduction to advanced database system concepts, including query processing, transaction processing, distributed and heterogeneous databases, object-oriented and object-relational databases, data mining and data warehousing, spatial and multimedia systems, and Internet information systems.

CMPT 741-3 Data Mining

The student will learn basic concepts and techniques of data mining. Unlike data management required in traditional database applications, data analysis aims to extract useful patterns, trends and knowledge from raw data for decision support. Such information are implicit in the data and must be mined to be useful.

CMPT 829-3 Special Topics in Bioinformatics

Examination of recent literature and problems in bioinformatics. Within the CIHR graduate bioinformatics training program, this course will be offered alternatively as the problem-based learning course and the advanced graduate seminar in bioinformatics (both concurrent with MBB 829).

CMPT 842-3 Concurrency Control in Database Systems

Transactions, recoverability, serializability theory, schedulers, locking, timestamping, optimistic schedulers, multiversion database systems. Recovery, commit protocols, termination protocols. Replicated database systems, quorum-based concurrency control. Distributed snapshot taking, distributed deadlock detection, reliable storage systems. Concurrency control in object-oriented database systems.

CMPT 843-3 Database and Knowledge-Base Systems

An advanced course on database systems which in recent years focuses on data mining and data warehousing, including their principles, designs, implementations, and applications. Depending on the availability of time, it may cover some additional topics on advanced database system concepts, including deductive and objectoriented database systems, spatial and multimedia databases, and database-oriented Web technology.

CMPT 884-3 Special Topics in Database Systems

Area V - Graphics, HCI, Vision, and Visualization

CMPT 761-3 Image Synthesis (previously CMPT 770-3)

Advanced topics and techniques in computer graphics with a focus on image synthesis are covered. Topics include photorealistic rendering, advanced ray tracing, Monte Carlo methods, photon maps, radiosity, light fields, participating media, as well as tone reproduction. Students with credit for CMPT 461, CMPT 770, or equivalent may not take CMPT 761 for further credit.

CMPT 764-3 Geometric Modeling in Computer Graphics

Advanced topics in geometric modeling and processing for computer graphics, such as Bezier and B-spline techniques, subdivision curves and surfaces, solid modeling, implicit representation, surface reconstruction, multi-resolution modeling, digital geometry processing (e.g., mesh smoothing, compression, and parameterization), point-based representation, and procedural modeling. Prerequisite: CMPT 361, MACM 316. Students with credit for CMPT 464 or equivalent may not take CMPT 764 for further credit.

CMPT 767-3 Visualization (previously CMPT 878-3, CMPT 775-3)

This course presents advanced topics in the field of scientific visualization. Topics may include: an introduction to visualization (importance, basic approaches and existing tools), abstract visualization concepts, human perception, visualization methodology, 2D and 3D display and interaction, advanced techniques (polygon reduction, volume rendering, multivariate representations, parallel algorithms, etc.) and virtual reality. Prerequisites: CMPT 461, 770 or equivalent (by permission of the instructor).

CMPT 773-3 User-Interface Design (previously CMPT 873-3)

This course provides an overview of a number of research areas in human-computer interaction. Topics may include: overview of HCI (historical/intellectual, GUI, case studies), interactive systems (design,evaluation, software development), interaction methods (vision, graphic design, touch, speech, etc.), human factors (information processing, capabilities), research frontiers (computersupported cooperative-work, intelligent systems, hypertext, multimedia, virtual reality, cyberspace). Prerequisites: CMPT 363 or equivalent is recommended (instructor discretion).

CMPT 820-3 Multimedia Systems

This seminar course covers current research in the field of multimedia computing. Topics include multimedia data representation, compression, retrieval, network communications, and multimedia systems.

CMPT 821-3 Robot Vision

This course discusses issues and research results pertinent to robot vision. Topics include depth recovery for robot navigation, threedimensional object recognition and scene analysis, model-based approach, parallel vision machines and algorithms, and case study of contemporary robot vision systems.

CMPT 822-3 Computational Vision

A seminar based on the Artificial Intelligence approach to vision. Computational vision has the goal of discovering the algorithms and heuristics, which allow a two-dimensional array of light intensities to be interpreted as a three-dimensional scene. By reading and discussing research papers — starting with the original work on the analysis of line drawings, and ending with the most recent work in the field — participants begin to develop a general overview of computational vision, and an understanding of the current research problems.

CMPT 888-3 Special Topics in Computer Graphics, HCI, Vision, and Visualization

Examines current research topics in computer graphics, human computer interaction (including audio), computer vision and visualization.

Special Courses

CMPT 880-3 Special Topics in Computing Science

This course aims to give students experience to emerging important areas of computing science. Prerequisite: instructor discretion.

CMPT 889-3 Special Topics in Interdisciplinary Computing

This course may be offered as Computers in Medicine, Computers in Music, Computers in Biology etc.

CMPT 891-3 Advanced Seminar

Acquaints new graduate students with the research interests of the faculty, and introduces students to issues relevant to their graduate studies. Grade given: S (satisfactory) or U (unsatisfactory)

CMPT 894-3 Directed Reading

CMPT 897 M.Sc. Project

CMPT 898 M.Sc. Thesis

CMPT 899 Ph.D. Thesis

Residence Accommodation

Madge Hogarth House, a women's residence, accommodates 66 students. Shell House and McTaggart-Cowan Hall, co-educational residences, accommodates 152 and 200 students, respectively. Nine townhouse complexes house a total of 396 students. Hamilton Hall, a graduate student building, accommodates 104 graduate students in studio apartments. Louis Riel Apartment Residence consists of 149 one bedroom and 61 two bedroom apartments.

Detailed information can be obtained by contacting the Residence and Housing Office at:

228 Shell House,
Simon Fraser University,
Burnaby, B.C.
V5A 1S6.

Telephone: (778) 782-4201
Fax: (778) 782-5903

Student Services

Office hours: 8:30 am - 4:30 pm weekdays.