252-0239-00L  Software Verification

SemesterAutumn Semester 2015
LecturersB. Meyer, C. A. Furia, S. Nanz
Periodicityyearly recurring course
Language of instructionEnglish



Courses

NumberTitleHoursLecturers
252-0239-00 VSoftware Verification
A few of the Wednesday classes (1 hour, 15-16) are given by guest speakers on a research topic related to the content of the preceding Monday class.
3 hrs
Mon10:15-12:00RZ F 21 »
Wed14:15-15:00RZ F 21 »
B. Meyer, C. A. Furia, S. Nanz
252-0239-00 USoftware Verification2 hrs
Wed15:15-17:00RZ F 21 »
B. Meyer, C. A. Furia, S. Nanz

Catalogue data

AbstractThis course surveys some of the main approaches to software verification, including axiomatic semantics, abstract interpretation, model checking, and testing.
ObjectiveAfter successfully taking this course, students will have a theoretical and practical understanding of:
* The principles behind fundamental software verification techniques, including Hoare-style axiomatic semantics, abstract interpretation, model checking, and testing.
* Application of the principles to the construction of verification tools, in particular program provers.
* Research challenges in these areas.
ContentThe idea of software verification has been around for decades, but only recently have the techniques become mature enough to be implemented and be applicable in practice. Progress has been made possible by the convergence of different techniques, originally developed in isolation.

This course embraces this diversity of approaches, by surveying some of the main ideas, techniques, and results in software verification. These include in particular:


* Axiomatic semantics, which provides a foundation of program correctness proofs by supplying a rigorous semantics of programs.
* Abstract interpretation, which provides a general framework to express and design static techniques for program analysis.
* Model checking, which provides efficient techniques for the exhaustive exploration of state-based models of programs and reactive systems.
* Testing, which provides the counterpart to exhaustive techniques by defining dynamic analyses to detect programming mistakes and correct them.

To demonstrate some of the techniques in practice, the course will offer a practical project requiring the application of verification tools to illustrative examples.
LiteratureAxiomatic semantics:

* Michael Huth and Mark Ryan. Logic in Computer Science: Modelling and Reasoning about Systems, second edition. Cambridge University Press, 2004
* Aaron Bradley and Zohar Manna. The Calculus of Computation. Springer, 2007.
* David Gries. The Science of Programming. Springer, 1981.
* Bertrand Meyer. Introduction to the Theory of Programming Languages. Prentice Hall, 1990.
* Flemming Nielson and Hanne Riis Nielson. Semantics with Applications: An Appetizer. Springer, 2007.
* Krzysztof R. Apt, Frank S. de Boer, Ernst-Rüdiger Olderog. Verification of Sequential and Concurrent Programs. Springer, 2009.


Abstract interpretation:

* Flemming Nielson, Hanne Riis Nielson, Chris Hankin: Principles of Program Analysis, Springer, ISBN 3-540-65410-0.
* Neil D. Jones, Flemming Nielson: Abstract Interpretation: a Semantic-Based Tool for Program Analysis


Model checking and real-time:

* Edmund M. Clarke, Orna Grumberg, and Doron A. Peled. Model Checking. MIT Press, 2000.
* Carlo A. Furia, Dino Mandrioli, Angelo Morzenti, and Matteo Rossi. Modeling Time in Computing. Monographs in Theoretical Computer Science. An EATCS series. Springer, 2012.


Testing:

* Mauro Pezzè and Michal Young: Software Testing and Analysis: Process, Principles and Techniques, Wiley, 2007.
* Paul Ammann and Jeff Offutt: Introduction to Software Testing, Cambridge University Press, 2008.

Performance assessment

Performance assessment information (valid until the course unit is held again)
Performance assessment as a semester course
ECTS credits6 credits
ExaminersB. Meyer, C. A. Furia, S. Nanz
Typeend-of-semester examination
Language of examinationEnglish
RepetitionThe performance assessment is only offered at the end after the course unit. Repetition only possible after re-enrolling.
Additional information on mode of examinationProject (take-home exam): 30%,

Final exam at end of semester (105 min.): 70%

Learning materials

No public learning materials available.
Only public learning materials are listed.

Groups

No information on groups available.

Restrictions

There are no additional restrictions for the registration.

Offered in

ProgrammeSectionType
Certificate of Advanced Studies in Computer ScienceFocus Courses and ElectivesWInformation
Computer Science MasterFocus Core Courses Software EngineeringWInformation