Please note:

To view the current Academic Calendar, go to www.sfu.ca/students/calendar.

School of Computing Science | Faculty of Applied Sciences Simon Fraser University Calendar | Spring 2025

Computing Science Major

Bachelor of Science or Bachelor of Arts

The school offers a general program leading to a bachelor of science (BSc) or bachelor of arts (BA) degree. This undergraduate degree is appropriate for many interdisciplinary areas. Visit www.cs.sfu.ca for information.

Admission Requirements

Entry into computing science programs is possible via

  • direct admission from high school
  • direct transfer from a recognized post-secondary institution, or combined transfer units from more than one post-secondary institution
  • internal transfer from within Simon Fraser University

Admission is competitive. A separate admission average for each entry route is established each term, depending on spaces available and subject to the approval of the Dean of Applied Sciences. Admission averages are calculated over a set of courses satisfying particular breadth constraints.

For detailed university admission requirements, visit https://www.sfu.ca/students/admission/admission-requirements.html. For more detailed School of Computing Science admission information, visit https://www.sfu.ca/computing/prospective-students/undergraduate-students/admissions/advising.html, or send an email to asadvise@sfu.ca.

Internal Transfer

Internal transfer allows students to transfer, within Simon Fraser University, from one faculty to another.

Simon Fraser University students applying for School of Computing Science admission are selected on the basis of an admission Computing Related Grade Point Average (CRGPA) and Cumulative Grade Point Average (CGPA). The CRGPA is computed from all courses the student has taken from the following: (CMPT 120, 128 or 130), (CMPT 125, 129 or 135), CMPT 225, (CMPT 275 or 276), CMPT 295, CMPT 300, CMPT 307, MACM 101, (CMPT 210 or MACM 201), MACM 316. Applicants must have completed at least one MACM course and at least two CMPT courses from this list before applying. At least two courses used in the CRGPA calculation must have been taken at SFU.

No course may be included in the average if it is a duplicate of any previous course completed at Simon Fraser University or elsewhere.

The average for admission based on internal transfer is competitive and the school sets competitive averages each term. 

The CRGPA minimum average is 2.67 and the CGPA minimum average is 2.40 - the competitive averages will never be below these minima.

Continuation Requirements

Students who do not maintain at least a 2.40 CGPA will be placed on probation within the School. Courses available to probationary students may be limited. Each term, these students must consult an advisor prior to enrollment and must achieve either a term 2.40 term GPA or an improved CGPA. Students who fail to do so may be removed from the program.

Reinstatement from probationary standing occurs when the CGPA improves to 2.40 or better and is maintained.

Graduation Requirements

A GPA of 2.00 must be obtained for upper division courses used to fulfil the program requirements.

Prerequisite Grade Requirement

Computing science course entry requires a grade of C- or better in each prerequisite course.

A minimum 2.40 CGPA is required for 200, 300 and 400 division CMPT courses. For complete information, contact an Applied Sciences Advisor.

Program Requirements

For specific program information and course plans consult an Applied Sciences Advisor.

Lower Division Requirements

Students must complete the courses listed below. It is suggested that students complete a recommended schedule of courses within the first two years.

Students complete all of

CMPT 105W - Social Issues and Communication Strategies in Computing Science (3)
CMPT 120 - Introduction to Computing Science and Programming I (3)
CMPT 125 - Introduction to Computing Science and Programming II (3)
CMPT 201 - Systems Programming (4)
CMPT 210 - Probability and Computing (3)
CMPT 225 - Data Structures and Programming (3)
CMPT 276 - Introduction to Software Engineering (3)
CMPT 295 - Introduction to Computer Systems (4)
MACM 101 - Discrete Mathematics I (3)
STAT 271 - Probability and Statistics for Computing Science (3)

and one of

MATH 150 - Calculus I with Review (4)
MATH 151 - Calculus I (3)
MATH 154 - Mathematics for the Life Sciences I (3) **
MATH 157 - Calculus I for the Social Sciences (3) **

and one of

MATH 152 - Calculus II (3)
MATH 155 - Mathematics for the Life Sciences II (3) **
MATH 158 - Calculus II for the Social Sciences (3) **

and one of

MATH 232 - Applied Linear Algebra (3)
MATH 240 - Algebra I: Linear Algebra (3)

** with a grade of at least B+, and with school permission.

Upper Division Requirements

Students complete at least 45 upper division units including

CMPT 376W - Professional Responsibility and Technical Writing (3)

 Students should consult an academic advisor before commencing upper division requirements.

Elective Courses

In addition to the courses listed above, students should consult an academic advisor to plan the remaining required elective courses.

Breadth Requirement

Five courses from five of the six Table I areas of concentration (see below) must be completed including

CMPT 307 - Data Structures and Algorithms (3)

CMPT 354 is also recommended.

Depth Requirement

Twelve units of additional CMPT courses numbered CMPT 400 or above must be completed (excluding CMPT 415, 416 and 498, which may be included by special permission).

BSc Credential

For a BSc computing science degree, the following additional requirements must be met.

  • two additional courses chosen from Table I, Table II or Table III

MACM 316 - Numerical Analysis I (3)

BEd Credential 

For a major in computing science in conjunction with a BEd program as offered by the Faculty of Education, one additional CMPT course chosen from Table I or Table II must be completed, to total at least 30 upper division units in CMPT courses.

BA Credential

For a BA computing science degree within the Faculty of Applied Sciences, the following additional requirements must be met.

one additional CMPT upper division course chosen from Table I or Table II must be completed bringing the total upper division units in CMPT courses to a minimum of 30 units.

a concentration of 15 units in a Faculty of Arts and Social Sciences discipline (department) including at least six units of upper division credit.

Areas of Concentration

The primary upper division requirements are structured according to breadth, depth and credential requirements as listed above.

As part of a major program, students may complete one or more areas of concentration from the six areas listed in Table I. To complete a concentration, students complete the major requirements, including four courses in the corresponding Area as listed in Table I, two of which must be at the 400 division. Courses used to meet the requirements of a concentration may also be used to meet other program requirements.

Table I – Computing Science Concentrations

Artificial Intelligence

CMPT 310 - Introduction to Artificial Intelligence (3)
CMPT 340 - Biomedical Computing (3)
CMPT 410 - Machine Learning (3)
CMPT 411 - Knowledge Representation (3)
CMPT 413 - Computational Linguistics (3)
CMPT 417 - Intelligent Systems (3)
CMPT 419 - Special Topics in Artificial Intelligence (3)
CMPT 420 - Deep Learning (3)

Visual and Interactive Computing

CMPT 361 - Introduction to Visual Computing (3)
CMPT 363 - User Interface Design (3)
CMPT 365 - Multimedia Systems (3)
CMPT 412 - Computer Vision (3)
CMPT 461 - Computational Photography and Image Manipulation (3)
CMPT 464 - Geometric Modelling in Computer Graphics (3)
CMPT 466 - Animation (3)
CMPT 467 - Visualization (3)
CMPT 469 - Special Topics in Computer Graphics (3)

Computing Systems

CMPT 303 - Operating Systems (3)
CMPT 305 - Computer Simulation and Modelling (3)
CMPT 371 - Data Communications and Networking (3)
CMPT 379 - Principles of Compiler Design (3)
CMPT 403 - System Security and Privacy (3)
CMPT 431 - Distributed Systems (3)
CMPT 433 - Embedded Systems (3)
CMPT 450 - Computer Architecture (3)
CMPT 471 - Networking II (3)
CMPT 479 - Special Topics in Computing Systems (3)
CMPT 499 - Special Topics in Computer Hardware (3)

Information Systems

CMPT 353 - Computational Data Science (3)
CMPT 354 - Database Systems I (3)
CMPT 362 - Mobile Applications Programming and Design (3)
CMPT 372 - Web II - Server-side Development (3)
CMPT 441 - Computational Biology (3)
CMPT 454 - Database Systems II (3)
CMPT 456 - Information Retrieval and Web Search (3)
CMPT 459 - Special Topics in Database Systems (3)
CMPT 474 - Web Systems Architecture (3)

Programming Languages and Software

CMPT 373 - Software Development Methods (3)
CMPT 383 - Comparative Programming Languages (3)
CMPT 384 - Symbolic Computing (3)
CMPT 473 - Software Testing, Reliability and Security (3)
CMPT 475 - Requirements Engineering (3)
CMPT 477 - Introduction to Formal Verification (3)
CMPT 489 - Special Topics in Programming Languages (3)

Theoretical Computing Science

CMPT 307 - Data Structures and Algorithms (3)
CMPT 308 - Computability and Complexity (3)
CMPT 404 - Cryptography and Cryptographic Protocols (3)
CMPT 405 - Design and Analysis of Computing Algorithms (3)
CMPT 406 - Computational Geometry (3)
CMPT 407 - Computational Complexity (3)
CMPT 409 - Special Topics in Theoretical Computing Science (3)
CMPT 476 - Introduction to Quantum Algorithms (3)
MACM 300 - Introduction to Formal Languages and Automata with Applications (3)

Table II – Application Courses

Currently no courses.

Table III – Computing Mathematics Courses

MACM 316 - Numerical Analysis I (3)
MACM 401 - Introduction to Computer Algebra (3)
MACM 442 - Cryptography (3)
MATH 308 - Linear Optimization (3)
MATH 340 - Algebra II: Rings and Fields (3)
MATH 343 - Applied Discrete Mathematics (3)

Other Courses Per Department Approval

The following courses may be counted in one of the above tables with permission of the school.

CMPT 318 - Special Topics in Computing Science (3)
CMPT 415 - Special Research Projects (3)
CMPT 416 - Special Research Projects (3)
CMPT 496 - Directed Studies (3)
CMPT 497 - Dual Degree Program Capstone Project (6)
CMPT 498 - Honours Research Project (6)

Writing, Quantitative, and Breadth Requirements

Students admitted to Simon Fraser University beginning in the fall 2006 term must meet writing, quantitative and breadth requirements as part of any degree program they may undertake. See Writing, Quantitative, and Breadth Requirements for university-wide information.

WQB Graduation Requirements

A grade of C- or better is required to earn W, Q or B credit

Requirement

Units

Notes
W - Writing

6

Must include at least one upper division course, taken at Simon Fraser University within the student's major subject; two courses (minimum three units each)

Q - Quantitative

6

Q courses may be lower or upper division; two courses (total six units or more)
B - Breadth

18

Designated Breadth

Must be outside the student's major subject, and may be lower or upper division:

Two courses (total six units or more) Social Sciences: B-Soc
Two courses (total six units or more) Humanities: B-Hum
Two courses (total six units or more) Sciences: B-Sci

6

Additional Breadth

Two courses (total six units or more) outside the student's major subject (may or may not be B-designated courses, and will likely help fulfil individual degree program requirements).

Students choosing to complete a joint major, joint honours, double major, two extended minors, an extended minor and a minor, or two minors may satisfy the breadth requirements (designated or not designated) with courses completed in either one or both program areas.

Residency Requirements and Transfer Credit

  • At least half of the program's total units must be earned through Simon Fraser University study.
  • At least two thirds of the program's total upper division units must be earned through Simon Fraser University study.

Please see Faculty of Applied Sciences Residency Requirements for further information.

Co-operative Education and Work Experience

All computing science students are strongly encouraged to explore the opportunities that Work Integrated Learning (WIL) can offer them. Please contact a computing science co-op advisor during your first year of studies to ensure that you have all of the necessary courses and information to help plan for a successful co-op experience.