CSC 2108F, Fall 2001

Automated Verification


General Information:

Instructor:
Marsha Chechik
Email:
chechik@cs.toronto.edu
Office Hours: 
after class and by appointment
Office: 
D.L. Pratt 384, X3820 
Lectures: 
Tuesdays 2-4 in UC256
Class Homepage: 
http://www.cs.toronto.edu/~chechik/courses01/csc2108

Course Description:

Several notations and methods have been developed to help the designer specify clear and unambiguous system requirements, verify that the requirements are consistent and correct, and verify that the refined design meets its specification. However, these methods are time-consuming and error-prone, and can be applied more effectively if there are tools to check their correctness.

The goal of the course is to emphasize formal notations and methods that have tool support. We will cover just the very basis of underlying theory for the tools. Discussed techniques include but not limited to

Coursework

There are no exams in this class.

To encourage hands-on experience, there will be 4 verification and specification assignments involving prototype-quality verification CASE tools. These assignments are mandatory for students taking this course for credit and auditors. In addition, each student registered for this class will have to complete a research project to specify and verify a larger example using one of the tools we studied or one of his/her choice. Reports on the projects will be written up, and results will be presented in class. The following is possible topics of assignments. In these assignments you are asked to model a simple concurrent system and analyze its correctness using the tools that appear in parentheses.

The topics of the assignments are tentative and may be changed if there is enough interest.

Marking Scheme:

Assignment 1 10% 
Assignment 2 10% 
Assignment 3 10% 
Assignment 4 10% 
Class participation 20% 
Research project 40% 

Class participation includes presentations of assignments.

Prerequisites:

Graduate standing or permission of instructor. Experience with formal methods, although helpful, is not necessary. However, the course assumes familiarity with basic computer science concepts: relations and functions; boolean and first-order logic (from undergrad discrete-math course), and finite-state machines. You are also expected to have basic knowledge of concurrency.

Marsha Chechik