Software Engineering/Computer Science 4/6L03
Mathematically Rigorous Software Design

Course outline, 2002 September 18

1. Instructor

Dr.-Ing. Robert L. Baber
Office: ITC (T16)-168, tel. ext. 27874
Email: Baber@McMaster.CA
Office hours: Thursdays 14.30-16.30 or by appointment or when available

2. Course Structure

Three 50-minute lectures weekly:
Mondays and Thursdays 9.30-10.20, Tuesdays 10.30-11.20, room ABB/271

3. Teaching Assistant

One teaching assistant has been allocated to this course and will be available for consultation.

4. Prerequisite and Corequisite Knowledge

The formal prerequisite for this topic is registration in Level IV Software Engineering, Level IV Computer Science or graduate studies. General mathematical knowledge (especially basic concepts and definitions of sets, functions, images and preimages of a set under a function, and Boolean algebra) and familiarity with one or more procedural programming languages is presumed. All students should review the general mathematical background material (see at the beginning of the term.

Students are also expected to be able to reformulate word problems into mathematical terminology with facility. The document Translating English to Mathematics (at may help them to improve their abilities in this area.

5. Calendar Description

Mathematical model of a program and its execution, preconditions, postconditions, partial, semi-total and total correctness, proof rules and their application both to verifying and to designing programs. While a complete theoretical foundation is presented, the motivation, orientation and ultimate goal of this course are the practical application of the material covered.

6. Mission

Characteristic of every engineering field is a theoretical, scientific foundation upon which most of the engineer’s work is based. Engineers apply this foundation continually, systematically and almost subconsciously in the course of performing their professional work. This basis for engineering work is a prerequisite for achieving the reliability of designs to which engineers, their clients and society have become accustomed.

The mission of this course is to present such a theoretical, scientific foundation for designing software and for proving mathematically that it is correct, i.e. that it satisfies its specification. In particular, this course presents a mathematical model of a program and its execution and shows how it can be practically applied to design a program to satisfy a given specification and to prove that the program does, in fact, satisfy the specification.

Emphasis will be placed on designing and verifying individual subprograms and routines.

7. Objectives

The students will learn how a mathematically based approach enables one to design correct software effectively in practice. In particular, after completing this course the students will be able

8. Grading

For undergraduate students, the grade for the course will be made up of the grades for assignments, two class tests and the final examination weighted as follows:

For graduate students, the grade for the course will be made up of the grades for assignments, a design and analysis project, two class tests and the final examination weighted as follows: The assignments, tests and/or final examination for graduate students may contain additional and/or more difficult questions than those for undergraduates.

Each assignment will be graded on a coarse scale (an integer from 0 to 4). The assignments will be reviewed (and in some cases graded) in class. Assignments will be individual exercises and possibly a small number of group exercises.

All students must be prepared to present their solutions to the assignments in class. A student's grade on an assignment can be affected positively or negatively by the student's presention of the solutions.

9. Literature

Notes and exercises prepared by the instructor will be distributed to the students via the course's web site at

In addition, the following literature is recommended as ancillary reading:

* The books marked * above are available online in pdf files. See web page for further information on each of these books and to download the files containing them.

An extensive bibliography of other relevant literature can be found in the book Praktische Anwendbarkeit mathematisch rigoroser Methoden zum Sicherstellen der Programmkorrektheit listed above, p. 201-235.

10. Schedule

The following is a tentative schedule for this term. Changes will be announced in class and/or a revised schedule will be published as required.

September 5 – October 10: Chapters 1 – 5 of the lecture notes and related assignments
Test 1: October 15
October 17 – November 14: Chapters 6 – 8 of the lecture notes and related assignments
Test 2: November 19
November 21 – December 2: Chapters 9 – 10 of the lecture notes and assignments and other material related to the entire course, general review.
Graduate students' project due: November 25
Final examination: during the examination period
See also the reading and study assignments at

11. Announcements

Please refer to frequently for announcements and news items relevant to this course. Notes and exercises prepared by the instructor will be distributed to the students via the course's web site at

12. Notes

The documents referred to above (the Statement on Academic Ethics and the Senate Resolutions on Academic Dishonesty) are also available online at and