Software Systems: Fundamentals

Fundamentals is one of three main areas of study in software systems, and includes the study of mathematics, writing, and theoretical computing. These are the foundations for any field of technical studies.

Students complete at least 27 units, including all of:

Social Issues and Communication Strategies in Computing Science

CMPT 105W

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.

Professional Responsibility and Technical Writing

CMPT 376W

Covers professional writing in computing science, including format conventions and technical reports. The basis for ethical decision-making and the methodology for reaching ethical decisions concerning computing matters will be studied. Students will survey and write research papers, and both individual and group work will be emphasized. Prerequisite: CMPT 105W and (CMPT 275 or CMPT 276), with a minimum grade of C-. Writing.

Discrete Mathematics I

MACM 101

Introduction to graph theory, trees, 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.

Probability and Computing

CMPT 210

Probability has become an essential tool in modern computer science with applications in randomized algorithms, computer vision and graphics, systems, data analysis, and machine learning. The course introduces the foundational concepts in probability as required by many modern applications in computing. Prerequisite: MACM 101, MATH 152, CMPT 125 or CMPT 135, and (MATH 240 or MATH 232), all with a minimum grade of C-.

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 the required:

Probability and Statistics for Computing Science

STAT 271

This is an introductory course in probability and statistics that is designed for Computer Science students. Mainly covers basic probability theory and statistical methods for designing and analyzing computing algorithms and systems. Topics include continuous probability distributions, random variables, multivariate normal distributions, parameter estimation and inference theory, as well as design and analysis of statistical studies, including hypothesis testing and presentation of statistical data. Prerequisite: CMPT 210 with a minimum grade of C-.

Software Systems