Software Systems: Fundamentals

Fundamentals is one of three main areas of study in software systems. It is the study of computer systems and the way they are organized, including software protocols. Knowing the capabilities of and restrictions on computer systems is a prerequisite for designing effective software.

Students complete at least 27 units, including all of:

Social Issues and Communication Strategies in Computing Science


This course teaches the fundamentals of informative and persuasive communication for professional engineers and computer scientists. A principal goal of this course is to assist students in thinking critically about various contemporary technical, social, and ethical issues. It focuses on communicating technical information clearly and concisely, managing issues of persuasion when communicating with diverse audiences, presentation skills, and teamwork. Students with credit for ENSC 102, ENSC 105W, MSE 101W or SEE 101W may not take CMPT 105W for further credit. Writing.

Data Structures and Algorithms

CMPT 307

Design and analysis of efficient data structures and algorithms. General techniques for building and analyzing algorithms (greedy, divide & conquer, dynamic programming, network flows). Introduction to NP-completeness. Prerequisite: CMPT 225, (MACM 201 or CMPT 210), (MATH 150 or MATH 151), and (MATH 232 or MATH 240), all with a minimum grade of C-. MATH 154 or MATH 157 with a grade of at least B+ may be substituted for MATH 150 or MATH 151.

Technical Writing and Group Dynamics


Covers professional writing in computing science, including format conventions and technical reports. Attention is paid to group dynamics, including team leadership, dispute resolution, cognitive bias, professional ethics and collaborative writing. Research methods are also discussed. The use of LaTeX and various version control tools are emphasized. Students with credit for CMPT 376 may not take this course for further credit. Prerequisite: CMPT 105W and (CMPT 275 or CMPT 276), with a minimum grade of C-. Writing.

Discrete Mathematics I

MACM 101

Introduction to counting, induction, automata theory, formal reasoning, modular arithmetic. Prerequisite: BC Math 12 (or equivalent), or any of MATH 100, 150, 151, 154, 157. Quantitative/Breadth-Science.

Discrete Mathematics II

MACM 201

A continuation of MACM 101. Topics covered include graph theory, trees, inclusion-exclusion, generating functions, recurrence relations, and optimization and matching. Prerequisite: MACM 101 or (ENSC 251 and one of MATH 232 or MATH 240). Quantitative.

Calculus I

MATH 151

Designed for students specializing in mathematics, physics, chemistry, computing science and engineering. Logarithmic and exponential functions, trigonometric functions, inverse functions. Limits, continuity, and derivatives. Techniques of differentiation, including logarithmic and implicit differentiation. The Mean Value Theorem. Applications of differentiation including extrema, curve sketching, Newton's method. Introduction to modeling with differential equations. Polar coordinates, parametric curves. Students with credit for either MATH 150, 154 or 157 may not take MATH 151 for further credit. Prerequisite: Pre-Calculus 12 (or equivalent) with a grade of at least A, or MATH 100 with a grade of at least B, or achieving a satisfactory grade on the Simon Fraser University Calculus Readiness Test. Quantitative.

Calculus II

MATH 152

Riemann sum, Fundamental Theorem of Calculus, definite, indefinite and improper integrals, approximate integration, integration techniques, applications of integration. First-order separable differential equations and growth models. Sequences and series, series tests, power series, convergence and applications of power series. Students with credit for MATH 155 or 158 may not take this course for further credit. Prerequisite: MATH 150 or 151, with a minimum grade of C-; or MATH 154 or 157 with a grade of at least B. Quantitative.

Applied Linear Algebra

MATH 232

Linear equations, matrices, determinants. Introduction to vector spaces and linear transformations and bases. Complex numbers. Eigenvalues and eigenvectors; diagonalization. Inner products and orthogonality; least squares problems. An emphasis on applications involving matrix and vector calculations. Students with credit for MATH 240 may not take this course for further credit. Prerequisite: MATH 150 or 151 or MACM 101, with a minimum grade of C-; or MATH 154 or 157, both with a grade of at least B. Quantitative.

and one of:

Introduction to Statistics

STAT 205

The collection, description, analysis and summary of data, including the concepts of frequency distribution, parameter estimation and hypothesis testing. Intended to be particularly accessible to students who are not specializing in Statistics. Students cannot obtain credit for STAT 205 if they already have credit for - or are taking concurrently - STAT 101, 201, 203, 285, or any upper division STAT course. Prerequisite: Recommended: 30 units. Quantitative.

Introduction to Probability and Statistics

STAT 270

Basic laws of probability, sample distributions. Introduction to statistical inference and applications. Prerequisite: or Corequisite: MATH 152 or 155 or 158, with a minimum grade of C-. Students wishing an intuitive appreciation of a broad range of statistical strategies may wish to take STAT 100 first. Quantitative.

Software Systems