Formal Methods and their Applications
This course starts discussing the motivation and the importance of
introducing formal methods in the design and verification of systems.
It presents how to incorporate formal methods within software engineering
methodologies, especially for those applications which are critical for safety
and security.

The course then introduces some specific formal notations, such as the CSP
process algebra and Temporal Logics, as well as automatic tools for system
modelling and verification. Practical examples illustrate how to use
formal notations and automatic tools within the system design process.

Finally, the course investigates the use of formal methods in the analysis
of safety and security properties of systems and on the relationship of those
properties with the system usability. This part of the course is illustrated
through examples of increasing complexity from different application domains.