University of Waterloo
200 University Ave W, Waterloo, ON
N2L 3G1
Phone: (519) 888-4567
Staff and Faculty Directory
Contact the Department of Electrical and Computer Engineering
Visit our COVID-19 information website to learn how Warriors protect Warriors.
Professor Werner Dietl
This is a draft, the document will be finalized in the first week of the term.
ECE654 Software Reliability Engineering is an advanced graduate course. After introducing basic concepts and models for software reliability and security, we will delve into state-of-the-art research and available tools. It is expected that you will read and prepare research papers that will be assigned for the different lectures and that you experiment with the different research prototypes. The lectures will consist of presentations by the lecturer and the students. Individual projects will complement the lectures and will give first-hand experience with current research.
Topic areas:
Lectures are held Thursdays from 11:30 to 14:20 in EIT 3151. There are no lab or tutorial slots.
My office hours are by appointment and will be held in DC 2522. I will also be available immediately after lectures. See contact details.
Course material, announcements, and submissions will be handled through Learn.
Begin all email subjects with [ECE654].
Try not to leave your questions until the last minute.
To be determined.
Prerequisite. Graduate standing in the ECE department at Waterloo.
Advanced programming skills in an object-oriented programming language. Experience in writing medium-sized programs (>20k LOC) and with setting up and using large open-source projects.
Grading. Grades may be curved or adjusted at the instructor’s discretion.
Project: 30%, Midterm: 20%, Final exam: 50%.
The project will consist of a research report (15%), an implementation (10%), and an in-class presentation (5%).
You must pass the final exam, midterm, and project to pass the course.
There is no textbook that needs to be bought. References for the individual lectures will be made available on Learn.
All lecture material will be available through Learn.
This is a tentative schedule that will get adapted during the term.
Week | Date | Class |
1 | May 7 | Introduction and organization |
2 | May 14 | Background preparation and quiz (instructor absent) |
3 | May 21 | Basic reliability and security concepts and models |
4 | May 28 | Testing, bug finding, and coding guides |
5 | June 4 | Type systems |
6 | June 11 | Midterm (might be moved; decided in 1st week) |
7 | June 18 | Design-by-Specification |
8 | June 25 | Model checking |
9 | July 2 | Theorem proving |
10 | July 9 | Project work (instructor absent) |
11 | July 16 | Project presentations |
12 | July 23 | Outlook and wrap-up |
The project forms an integral part of this course. We will discuss details about the project in the first week of the course and adapt it to the number of students taking the course.
It is expected that students attend lectures and complete the required assignments. Lectures will often include a hands-on activities or presentations by students; participation in these exercises is essential to succeed in the class. Slides will be provided via Learn. Any material discussed in class or in the required readings will be testable unless otherwise noted.
The following paragraph is the high-level outline provided by the ECE department; this course will follow the general guideline, but will be adjusted according to your feedback, interests, and experience.
The course consists of two related parts. The first part deals with the engineering of reliable software. It introduces basic software reliability concepts, describes relevant models and discusses processes for engineering of reliable software, including schemes and patterns for the design of reliable and fault tolerant software. The second part addresses development of secure software. It presents key software security concepts, techniques and models, overviews major software security vulnerabilities and their exploitation, and considers processes for development of secure software.
Thanks to Mohammad Ahmad Munawar and Rudolph E. Seviora for sharing their course material for previous iterations of the course.
University of Waterloo
200 University Ave W, Waterloo, ON
N2L 3G1
Phone: (519) 888-4567
Staff and Faculty Directory
Contact the Department of Electrical and Computer Engineering
The University of Waterloo acknowledges that much of our work takes place on the traditional territory of the Neutral, Anishinaabeg and Haudenosaunee peoples. Our main campus is situated on the Haldimand Tract, the land granted to the Six Nations that includes six miles on each side of the Grand River. Our active work toward reconciliation takes place across our campuses through research, learning, teaching, and community building, and is centralized within our Indigenous Initiatives Office.