CMPT 280 Intermediate Data Structures and Algorithms
Formal abstract data types; tree representations and searching: ordered trees, balanced trees, simple spacial trees; graph representations and searching: path algorithms, dfs, bfs, backtracking, and sorting algorithms.
CMPT 370 Intermediate Software Engineering
Principles and techniques for developing software combined with the practical experience of creating a mid-size software system as a member of a software development team. Includes: teamwork; projects, planning and process; users and requirements; use cases; modelling; quality; software architecture; testing; GUI design, design principles, patterns and implementation; ethics; professionalism.
CMPT 470/816 Advanced Software Engineering
Covers advanced software engineering principles and techniques. Includes: software architecture; software evolution; reverse engineering; design recovery; refactoring; software comprehension; software analysis; domain specific techniques; requirements and specification; advanced design and modeling techniques; formal methods; and the business of software.
CMPT 856 Topics in Software Engineering
Current research directions in the collaborative design and evolution of large-scale software systems.
CMPT 898 Topics in Programming Languages
Current programming language research directions, including domain specific languages, generative programming, software analysis and source code transformation.