Software Engineering, Reverse Engineering, Program Understanding, Software Visualization, Mining Software Repositories, Problem Determination, Root Cause Analysis.
Software must evolve over time or it becomes useless. Unfortunately, over time, software systems become more complex and increasingly difficult to understand and change to meet new requirements. An understanding gap has grown between what is known, useful, and available information about the system and what needs to be known to make changes.
Massive Open Online Courses
I am the instructor-of-record for several offerings, developed through the Faculty of Science and Onlea, and delivered by Coursera.
Object-oriented design and analysis, with interactive applications as the primary example. Topics include: software process; revision control; Unified Modeling Language (UML); requirements; software architecture, design patterns, frameworks, design guidelines; unit testing; refactoring; software tools. Prerequisite: CMPUT 201 or 275.Fall Term 2020
This weekly seminar brings students, researchers, and practitioners together to examine a variety of topics, both foundational and leading edge. Content varies over successive offerings of the course. Required of all Honors Computing Science students during each Fall/Winter semester of their degree program. Prerequisite: Restricted to Honors Computing Science students, or consent of the instructor.Fall Term 2020