Software Systems: Systems

Systems is one of three main areas of study in software systems, in which students study 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 15 units, including all of:

Introduction to Computer Systems

CMPT 295

The curriculum introduces students to topics in computer architecture that are considered fundamental to an understanding of the digital systems underpinnings of computer systems. Prerequisite: Either (MACM 101 and (CMPT 125 or CMPT 135)) or (MATH 151 and CMPT 102 for students in an Applied Physics program), all with a minimum grade of C-.

Operating Systems I

CMPT 300

This course aims to give the student an understanding of what a modern operating system is, and the services it provides. It also discusses some basic issues in operating systems and provides solutions. Topics include multiprogramming, process management, memory management, and file systems. Prerequisite: CMPT 225 and (CMPT 295 or ENSC 254), all with a minimum grade of C-.

Mechatronics Design I

MSE 110

First year project course designed to provide students with a first exposure to the challenges of project organization. Students are responsible for designing and constructing a mechanical robot optimized to solve a particular chosen task. The engineering challenges of the project are expected to focus half on mechanical design and half on control algorithm design and implementation. Students with credit for ENSC 182 may not take MSE 110 for further credit.

and three of:

Database Systems I

CMPT 354

Logical representations of data records. Data models. Studies of some popular file and database systems. Document retrieval. Other related issues such as database administration, data dictionary and security. Prerequisite: CMPT 225 and (MACM 101 or (ENSC 251 and ENSC 252)), all with a minimum grade of C-.

Data Communications and Networking

CMPT 371

Data communication fundamentals (data types, rates, and transmission media). Network architectures for local and wide areas. Communications protocols suitable for various architectures. ISO protocols and internetworking. Performance analysis under various loadings and channel error rates. Prerequisite: CMPT 225 and (MATH 151 or MATH 150), with a minimum grade of C-. MATH 154 or MATH 157 with a grade of at least B+ may be substituted for MATH 151 (MATH 150).

Web II - Server-side Development

CMPT 372

Introduces students to the fundamentals of server-side web development. Students will gain experience working with backend web frameworks, designing and implementing web APIs, and deploying web systems. Students will be introduced to popular back-end frameworks. The course will focus on the design, creating, implementation, and deployment of backend systems, including APIs. Students with credit for CMPT 470 may not take this course for further credit. Prerequisite: CMPT 272 and CMPT 225, both with a minimum grade of C-.

Distributed Systems

CMPT 431

An introduction to distributed systems: systems consisting of multiple physical components connected over a network. Architectures of such systems, ranging from client-server to peer-to-peer. Distributed systems are analyzed via case studies of real network file systems, replicated systems, sensor networks and peer-to-peer systems. Hands-on experience designing and implementing a complex distributed system. Students with credit for CMPT 401 before September 2008 may not take this course for further credit. Prerequisite: CMPT 300, 371, both with a minimum grade of C-.

Embedded Systems

CMPT 433

The basics of embedded system organization, hardware-software co-design, and programmable chip technologies are studied. Formal models and specification languages for capturing and analyzing the behavior of embedded systems. The design and use of tools for system partitioning and hardware/software co-design implementation, validation, and verification are also studied. Prerequisite: CMPT 295 and CMPT 300, with a minimum grade of C-.

Database Systems II

CMPT 454

An advanced course on database systems which covers crash recovery, concurrency control, transaction processing, distributed database systems as the core material and a set of selected topics based on the new developments and research interests, such as object-oriented data models and systems, extended relational systems, deductive database systems, and security and integrity. Prerequisite: CMPT 300 and 354, with a minimum grade of C-.

Networking II

CMPT 471

This course covers the fundamentals of higher level network functionality such as remote procedure/object calls, name/address resolution, network file systems, network security and high speed connectivity/bridging/switching. Prerequisite: CMPT 300 and 371, with a minimum grade of C-.

Software Systems