Teaching Formal Methods: Lessons to Learn

Formal methods should be taught as part of any degree in computing science or software engineering. We believe that discrete mathematics is the foundation upon which software development can be lifted up to the heights of a true engineering discipline. The transfer of formal methods to industry cannot be expected to occur without first transferring, from academia to industry, graduates who are well grounded in suchmathematical techniques. These graduatesmust bring a positive, yet realistic, view on the application of formal methods. Our goal is to produce software engineers who will go out into industry understanding the principles of specification, design and implementation. As these graduates develop their engineering skills, in an industrial setting, they should have the means, and the motivation, to integrate formality and rigour into any environment in which they are found. In this way, the formal methods should start to 'sell themselves'. This paper reports on our first attempt to teach a formal methods course as part of a degree in software engineering. Rather than concentrating on one particular method, we worked on a set of small case studies, using the mathematics in a flexible and intuitive manner, where the students could appreciate the need for formality. Each case study was intended to illustrate, in turn, the need for some fundamental formalism. An unexpected result was that we also identified weaknesses in our understanding of formal methods: students' naive questioning helped us to identify how the methods, and the teaching of these methods, could be improved. In brief, it was not just the students who were learning!

[1]  Judson Chambers Webb Review: Douglas R. Hofstadter, Godel, Escher, Bach: An Eternal Golden Braid , 1983 .

[2]  Carl A. Sunshine,et al.  Protocol Specification, Testing and Verification - Guest Editorial , 1982, Comput. Networks.

[3]  D. Hofstadter,et al.  Godel, Escher, Bach: An Eternal Golden Braid , 1979 .

[4]  Helmuth Partsch,et al.  Specification and Transformation of Programs - A Formal Approach to Software Development , 1990, Texts and Monographs in Computer Science.

[5]  Juris Reinfelds,et al.  Logic in first courses for computer science majors , 1995, WCCE.

[6]  J. Paul Gibson,et al.  Formal object oriented development of software systems using LOTOS , 1993 .

[7]  Ken Robinson,et al.  Using Miranda as a First Programming Language , 1993, J. Funct. Program..

[8]  Jim Woodcock,et al.  Using Z - specification, refinement, and proof , 1996, Prentice Hall international series in computer science.

[9]  Scott A. Smolka,et al.  Fundamental Results for the Verification of Observational Equivalence: A Survey , 1987, PSTV.

[10]  Jonathan P. Bowen,et al.  Seven More Myths of Formal Methods , 1994, FME.

[11]  Anthony Hall,et al.  Seven myths of formal methods , 1990, IEEE Software.

[12]  Cliff B. Jones,et al.  Systematic software development using VDM , 1986, Prentice Hall International Series in Computer Science.

[13]  Dan Craigen,et al.  An International Survey of Industrial Applications of Formal Methods , 1992, Z User Workshop.

[14]  J. Paul Gibson,et al.  Formal Object-Based Design In LOTOS , 1993 .

[15]  Robert Laurence Baber The spine of software - designing provably correct software: theory and practice: or a mathematical introduction to the semantics of computer programs , 1986 .

[16]  Juris Reinfelds A logical foundation course for CS majors , 1996, ACSE '96.

[17]  Antoni Diller,et al.  Z - an introduction to formal methods , 1990 .

[18]  David Gries,et al.  Specification and Transformation of Programs: A Formal Approach to Software Development , 1990 .

[19]  Stef Joosten,et al.  Teaching functional programming to first-year students , 1993, Journal of Functional Programming.

[20]  Dominique Méry,et al.  Fair objects , 1999 .

[21]  T. O'Shea,et al.  The Calculator Project-formal reasoning about programs , 1994, Proceedings Software Education Conference (SRIG-ET'94).

[22]  Kenneth J. Turner,et al.  Using Formal Description Techniques: An Introduction to Estelle, Lotos, and SDL , 1993 .