Winter 2018

Theoretical Foundations of Software Engineering


This course is an introduction to the theoretical foundations of software engineering covering topics in automata theory, computability, and computational complexity

As an aspiring software engineer, the goal of this course is to leave you with a deeper understanding of what we really mean when we talk about computers and computing. We'll delve into the essence of what a computer really is, which will then let us examine different kinds of computational problems. Some of these problems are easy to compute, some are hard to compute, and some cannot even be computed at all.

This course is not about circuits, CPUs, or any hardware in particular, nor is it about about any programming language or program in particular. Rather this course is about exploring the fundamental capabilities and limitations of any computer, and in turn, of the very software you will write through your career.


Apr 12th
I have updated the Exam review with a few suggested exercises from the textbook.
Apr 10th
Assignment 4 solutions available in OWL
Apr 8th
There are no more tutorial sessions. My office hour will run as ususal on Thrusday 12th, but I will be away at a conference the week of the 16-20th.
Mar 21
Assignment 3 solutions posted in OWL. Assigment 4 is available.
Mar 9
Reminder. NO class next Friday (Mar 16th)
Mar 4
Assignment 3 is available
Mar 2
The Final exam is confirmed for April 22nd, 10:00am in UCC 146
Feb 26th
IMPORTANT! The midterm room has changed to UCC-37. This is the weekly tutorial room. The date and time remain as Wed. 28th 9:00-10:00am.
Feb 26th
The recommended practice questions for the midterm are 1.6, 1.29 and 2.4 in the course textbook.
Feb 21st
Assignment 2 solutions are now available in OWL.
Feb 6th
Assignment 2 is now available
Feb 5th
Assignment 1 solutions are available in OWL under the Resources tab.
Jan 26th
The office hour has been set. Thursdays 10:30am-11:30am in TEB 235.
Jan 23rd
The midterm will be held Wednesday Feb 28th, 9:00-10:00am in FNB 1240
Jan 19th
I've added some Youtube lectures in the lecture resources. They're a great suppliment to what we're
Jan 18th
Note the tutorials are held Wednesday from 8:30am-10:30am in UCC-37. There was a typo on the course info page that incorrectly stated the tutorial began at 2:30pm. This has been corrected.
Jan 17th
Assignment 1 is available. The first tutorial will begin Wednesday Jan. 24th.
Jan 8th
Website is available.