Formal Methods for Software Development TDA294/DIT271, LP1, HT2019

Lecture Notes: Course Introduction


This is an introduction to the topic of formal methods (for software), both motivation and describing the overall area. We contrast this also to other areas of engineering, and to other means of ensuring high quality. We discuss specification in general, the match between specification and the specified system. Here, we emphasise the need of formal notations and of tool support. We finish by discussing degrees of abstraction and degrees of specification complexity, and place the two main parts of the course in this picture.

During the lecture, I also talk about how the KeY system was used to

  • discover a bug in the main sorting algorithm of common Java libraries, and
  • prove correctness of a fixed version.
See this blog.


W. Ahrendt, Sep 3, 2019