Software Systems Curriculum

 

SOFTWARE ENGINEERING

The study of how to effectively program as part of a group under realistic time and resource constraints.  This includes high-level issues such as software architecture and project management, as well as low-level issues such as version control and best practices for coding.

Required Courses:

 

Introduction to Computer Programming I

CMPT 130

An introduction to computing science and computer programming, using a systems oriented language, such as C or C++. This course introduces basic computing science concepts. Topics will include: elementary data types, control structures, functions, arrays and strings, fundamental algorithms, computer organization and memory management. Students with credit for CMPT 102, 120, 128 or 166 may not take this course for further credit. Students who have taken CMPT 125, 129 or 135 first may not then take this course for further credit. Prerequisite: BC Math 12 (or equivalent, or any of MATH 100, 150, 151, 154, or 157, with a minimum grade of C-). Quantitative/Breadth-Science.

Introduction to Computer Programming II

CMPT 135

A second course in systems-oriented programming and computing science that builds upon the foundation set in CMPT 130 using a systems-oriented language such as C or C++. Topics: a review of the basic elements of programming; introduction to object-oriented programming (OOP); techniques for designing and testing programs; use and implementation of elementary data structures and algorithms; introduction to embedded systems programming. Students with credit for CMPT 125, 126, or 129 may not take this course for further credit. Prerequisite: CMPT 130 with a minimum grade of C-. Quantitative.

Elective Courses - Choose One: 

 

Symbolic Computing

CMPT 384

This course considers modelling and programming techniques appropriate for symbolic data domains such as mathematical expressions, logical formulas, grammars and programming languages. Topics include recursive and functional programming style, grammar-based data abstraction, simplification and reduction transformations, conversions to canonical form, environment data structures and interpreters, metaprogramming, pattern matching and theorem proving. Prerequisite: CMPT 225 and (MACM 101 or (ENSC 251 and ENSC 252)), all with a minimum grade of C-.

Web Systems Architecture

CMPT 474

Web service based systems are fundamentally different from traditional software systems. The conceptual and methodological differences between a standard software development process and the development of a web service based information system. The technology involved during the construction of their own web service based application in an extensive project. Prerequisite: CMPT 371 with a minimum grade of C-.

Introduction to Formal Verification

CMPT 477

Introduces, at an accessible level, a formal 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 a model checking tool. Prerequisite: CMPT 275 or 276, with a minimum grade of C-.