Last updated 2010 May 3

About the Course

This is a course for fourth year honours students who, I assume, have a knowledge of programming languages, operating systems, and software design.

The course introduces systematic methods of testing and verifying various types of software systems covering a range of static and dynamic techniques and their use within the development process. All too often software is designed and then tested. The real aim must be to take a more holistic view, where design is carried out with verification in mind to achieve overall project goals.

Upon successful completion of the course you should be able to do the following.


The course text book is the following. It may be purchased at bookstore. Addional material and class slides are available from the resources page for the course.


The work load in this course, as in most computer science and engineering courses, is high. The course has a large unscheduled laboratory component to it that involves writing reports and testing programs. You should be preparedto devote 10 hours a week on average to the course; this includes class time. With proper planning and discipline, you can spread most of the work load fairly evenly throughout the course.

It is up to the you to read and study relevant material without explicit instructions. You are expected to find the required readings in the references and any other sources you can find. Part of the university experience is to acquire a measure of self reliance. I can only guide you as to what is useful to learn; the effort must come from you. The course classes will not cover all the topics in detail. Instead, the classes will cover the most important points and give you pointers as to how the rest of the material can be studied.


The course consists of three class hours per week. In preparation for classes you are expected to read the appropriate material - the class schedule gives an approximate idea of when various topics and readings will be deal with. In addition, exercises will be given which you should do in preparation for future classes.

Class participation

The course format is an interleaving of lecture and seminar style. I expect lots of participation and discussion. You will have to draw on your past experiences, current readings and exercises to not only ask questions but also answer questions raised by the myself and the other students.

You are encouraged to participate in class. Interviewers say that communications skills are a problem area for some of our graduate students. I encourage you to work on your communication skills in this class. Ask questions, Answer questions. Let me tell you from my own experience, once you have looked stupid enough times, it will no longer bother you. Believe me, I know. And, seriously, it is highly unlikely that your classmates will actually think you are stupid. It would be virtually impossible for a stupid person to make it this far through school. No, it is more likely that every person in the class is smart, not stupid. But no one knows everything, so we will all sometimes answer questions incorrectly, and we will all sometimes say something that is wrong. We may even ask a silly question; and we may even all laugh about it. That will be a growing experience in itself.

Reports and Exercises

You will hand in for grading a set of reports. The specifications are given as announcements in the course forum. The report page gives more information about the style and content of reports.

The class schedule gives the due dates and times for the reports.

The grading page describes the grading scheme for the course.

In addition, I may suggest ungraded exercises. Spend a reasonable amount of time on each exercise. Simply giving an effort leads to a learning experience and discussion. A major point of an exercise is to get all class members thinking about the same problem.

Tests and Examinations

There are no class tests or final examination for this course.