CS6389: Formal Methods and Programming Methodology


Course Information (http://www.utdallas.edu/~gupta/courses/mc)

Course Content

We will study various techniques that have been devised for formal verification of software systems, i.e., techniques that allow a programmer to formally claim that his/her software system works correctly under all circumstances. Formal verification is important for many software systems, especially those that are safety critical. Formal verification is something more than testing since testing increases a programmer's confidence for only those cases for which the software has been tested. Major part of the course will deal with a verification technique called Model Checking. Other formalisms such as Statecharts, Petrinets, timed automata, and logic-based techniques, will be covered as well. Course will include programming assignments involving use of a model checker.

Pre-requisite:

CS 6354; Must know automata theory (CS5349)

Grading

There will be no exams. There will be assignments involving using a model checker which will involve programming. Towards the end of the course, students will be required to make a presentation in one of the classes based on a paper that they will read.

Approach

This will be a lecture/discussion oriented course. We will be closely following the textbook for the Model checking part. For other topics, we will switch to reading papers that I will provide.