My formal teaching duties consist of courses for registered students at the University of Calgary.  If you are interested in being a student in LSMR (undergraduate or graduate), check out this article.

Below are pointers to upcoming or current courses.  More information is available on on the UofC's D2L pages for current students.


Fall 2021

No teaching.


Winter 2022

SENG 300 Introduction to Software Engineering

This is my regular intro to SE course. There are no major changes planned for this course over previous years.  Details will be available on D2L in about November.


SENG 541 Fundamentals of Software Evolution and Reuse/SENG 641 Software Evolution and Reuse

These courses are termed "cross-listed" as SENG 541 is aimed at undergraduates while SENG 641 is aimed at graduates.  The two courses will share lectures and some assignments.  Additional requirements will differ between them.

The course will be an exploration of techniques for quantitatively analyzing software changes over time, which is a bit different than in past offerings. Assignments will require you to exercise some of those techniques to analyze parts of systems, to see if the techniques really help. Students in SENG 541 will have an extra assignment where they need to compare different techniques directly on the same software system; there will also be a final exam.  Students in SENG 641 will have to propose and perform a project connected to software evolution or reuse; it doesn’t necessarily have to be connected to the techniques we will be studying.

In the past, the course was heavily geared towards research. This year, I think we will only look at a handful of papers as applications of the techniques or examples of analyzing software evolution/reuse in systems. The more applied approach should be easier to grasp, and my thought is that many of the techniques we will examine should be useful for data analyses outside software evolution and reuse.

I am not planning on requiring any specific programming language, but for each assignment students will have to select some open source system of interest to them, and students will have to find the appropriate implementations/tools for performing the analyses in that system's language. My default will be Java, but I will look into providing pointers for a few other, key languages.

Details will be available on D2L in about November.