Current Teaching


Past Teaching

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.