On Teaching Formal Methods: Behavior Models and Code Analysis

Teaching formal methods is a challenging task for several reasons. First, both the state-of-the-art knowledge and the tools are rapidly evolving. Second, there are no comprehensive textbooks covering certain topics, especially code analysis. In this paper, we share our experience with teaching two courses. The first is focused on classics of modeling and verification of software and hardware systems (LTS, LTL, equivalences, etc.), while the other one involves topics related to automated analysis of program code. We hope that other lecturers can benefit from our experience to improve their courses.

[1]  Rajeev Alur,et al.  A Temporal Logic of Nested Calls and Returns , 2004, TACAS.

[2]  K. Rustan M. Leino,et al.  Weakest-precondition of unstructured programs , 2005, PASTE '05.

[3]  Sriram K. Rajamani,et al.  Thorough static analysis of device drivers , 2006, EuroSys.

[4]  Wan Fokkink,et al.  Introduction to Process Algebra , 1999, Texts in Theoretical Computer Science. An EATCS Series.

[5]  Gerard J. Holzmann,et al.  Advanced SPIN Tutorial , 2004, SPIN.

[6]  Monty Newborn Automated theorem proving - theory and practice , 2000 .

[7]  Thomas A. Henzinger,et al.  Lazy abstraction , 2002, POPL '02.

[8]  Edsger W. Dijkstra,et al.  Cooperating sequential processes , 2002 .

[9]  Frank D. Valencia,et al.  Formal Methods for Components and Objects , 2002, Lecture Notes in Computer Science.

[10]  Thomas A. Henzinger,et al.  Program Analysis with Dynamic Precision Adjustment , 2008, 2008 23rd IEEE/ACM International Conference on Automated Software Engineering.

[11]  Sharad Malik,et al.  The Quest for Efficient Boolean Satisfiability Solvers , 2002, CAV.

[12]  Thomas A. Henzinger,et al.  The software model checker B last : Applications to software engineering , 2007 .

[13]  Daniel Kroening,et al.  Decision Procedures - An Algorithmic Point of View , 2008, Texts in Theoretical Computer Science. An EATCS Series.

[14]  Rajeev Alur,et al.  A Theory of Timed Automata , 1994, Theor. Comput. Sci..

[15]  Klaus Havelund,et al.  Model Checking Programs , 2004, Automated Software Engineering.

[16]  Monty Newborn,et al.  Automated Theorem Proving , 2000 .

[17]  Corina S. Pasareanu,et al.  Assume-guarantee verification of source code with design-level assumptions , 2004, Proceedings. 26th International Conference on Software Engineering.

[18]  Bor-Yuh Evan Chang,et al.  Boogie: A Modular Reusable Verifier for Object-Oriented Programs , 2005, FMCO.

[19]  Jan A. Bergstra,et al.  Process Algebra for Synchronous Communication , 1984, Inf. Control..

[20]  Edmund M. Clarke,et al.  Model Checking , 1999, Handbook of Automated Reasoning.

[21]  Corina S. Pasareanu,et al.  Predicate Abstraction with Under-approximation Refinement , 2007, Log. Methods Comput. Sci..

[22]  Gerard J. Holzmann,et al.  The SPIN Model Checker - primer and reference manual , 2003 .

[23]  Jirí Adámek,et al.  Component composition errors and update atomicity: static analysis , 2005, J. Softw. Maintenance Res. Pract..

[24]  Flemming Nielson,et al.  Principles of Program Analysis , 1999, Springer Berlin Heidelberg.

[25]  Frantisek Plasil,et al.  Component composition errors and update atomicity: static analysis: Research Articles , 2005 .

[26]  Corina S. Pasareanu,et al.  Verification of Java Programs Using Symbolic Execution and Invariant Generation , 2004, SPIN.

[27]  Corina S. Pasareanu,et al.  JPF-SE: A Symbolic Execution Extension to Java PathFinder , 2007, TACAS.

[28]  Thomas A. Henzinger,et al.  SYNERGY: a new algorithm for property checking , 2006, SIGSOFT '06/FSE-14.

[29]  Andreas Podelski,et al.  ACSAR: Software Model Checking with Transfinite Refinement , 2007, SPIN.