Instructors & Assistants
Contact
- Mailing List:
- Please register here for mailing list.
Date & Location
Lectures
- Tuesday 11:00 a.m. (c.t.) - 01:00 p.m., SR 00-009/13 Geb. 101
- Thursday 11:00 a.m. (c.t.) - 12:00 p.m., SR 00-009/13 Geb. 101
Exercises (Discussion Groups)
Summary
Recently, formal methods have been successfully used to specify and verify large software system. A current example is the Verisoft project, whose goal is to create a fully verified processor, operating system and compiler. In this lecture we will investigate the exising methods for the language Java.
The language Java was chosen because it is a mature language, with a semi-formal definition of its semantics (The Java Language Specification). However, to use mathematical reasoning, we need a precise definition of the semantics. Therefor, we will sketch the definition of an operational semantics for Java. Furthermore, we will investigate different formal methods for Java. The starting point will be the language extension JML that allows Design by Contract. This allows to add pre- and postconditions to methods and invariants to classes and loops. These assertions can be checked during runtime and this is the purpose of the JML runtime assertion checker (jmlrac). On the other hand, there are static methods, e.g., ESC/Java and Jahob, that automatically provide mathematical proofs that the Java code ensures the post-condition for each possible pre-condition. If these proofs cannot be find automatically, one can also use theorem provers that assists finding a proof manually.
In this lecture, we will present the different approaches for verification of Java code. In the exercise you can investigate different tools on small practical examples.
Exercise Sheets
- Exercise sheet 1 (17.04.2007)
- Exercise sheet 2 (24.04.2007)
- Exercise sheet 3 (03.05.2007) Skeleton for Map (tar.gz)
- Exercise sheet 4 (10.05.2007)
- Exercise sheet 5 (24.05.2007) Skeleton for hash table (tar.gz)
- Exercise sheet 6 (06.06.2007)
- Exercise sheet 7 (14.06.2007)
- Exercise sheet 8 (21.06.2007)
- Exercise sheet 9 (05.07.2007)
- Exercise sheet 10 (13.07.2007)
Slides
-
The slides are now available at
the eLectures web site.
- Lecture 1 (17.04.2007) Examples
- Lecture 2 (19.04.2007)
- Lecture 3 (24.04.2007)
- Lecture 4 (26.04.2007) Examples
- Lecture 5 (03.05.2007) Examples
- Lecture 6 (08.05.2007) Examples
- Lecture 7 (10.05.2007)
- Lecture 8 (15.05.2007) Examples
- Lecture 9 (22.05.2007) Examples Recording: Flash, Avi
- Lecture 10 (24.05.2007) Examples Recording: Flash, Avi
- Lecture 11 (05.06.2007) Examples Recording: Flash, Avi
- Lecture 12 (12.06.2007) Recording: Flash, Avi
- Lecture 13 (13.06.2007) Examples Recording: Flash, Avi
- Lecture 14 (19.06.2007) Examples Recording: Flash, Avi
- Lecture 15 (21.06.2007) Examples Recording: Flash, Avi
- Lecture 16 (26.06.2007) Examples Recording: Flash, Avi
- Lecture 17 (28.06.2007) Examples Recording: Flash, Avi
- Lecture 18 (10.07.2007) Examples Recording: Flash, Avi
- Lecture 19 (12.07.2007) Examples Recording: Flash, Avi
- Lecture 20 (19.07.2007) Recording: Flash, Avi
Material
Links & Literature
- J. Gosling et al.: The Java Language Specification (third edition)
- T. Lindholm, F. Yellin: The Java Virtual Machine Specification.
- Home page of the JML Project.
- G. Leavens et al.. JML Reference Manual (DRAFT), February 2007.
- B. Beckert, R. Hähnle, P. Schmitt (Eds.): Verification of Object-Oriented Software: The KeY Approach, Springer-Verlag, LNCS 4334
