Systematic software development using VDM
Systematic software development using VDM
Extensional equivalence for transition systems
Acta Informatica
The spine of software. Designing provably correct software: theory and practice
The spine of software. Designing provably correct software: theory and practice
Specification and transformation of programs: a formal approach to software development
Specification and transformation of programs: a formal approach to software development
A three paradigm first course for CS majors
SIGCSE '95 Proceedings of the twenty-sixth SIGCSE technical symposium on Computer science education
Using Z: specification, refinement, and proof
Using Z: specification, refinement, and proof
A logical foundation course for CS majors
ACSE '96 Proceedings of the 1st Australasian conference on Computer science education
Using Formal Description Techniques: An Introduction to Estelle, Lotos, and SDL
Using Formal Description Techniques: An Introduction to Estelle, Lotos, and SDL
Z: An Introduction to Formal Methods
Z: An Introduction to Formal Methods
Godel, Escher, Bach: An Eternal Golden Braid
Godel, Escher, Bach: An Eternal Golden Braid
IEEE Software
Seven More Myths of Formal Methods
IEEE Software
Fundamental Results for the Verification of Observational Equivalence: A Survey
Proceedings of the IFIP WG6.1 Seventh International Conference on Protocol Specification, Testing and Verification VII
Software engineering as a model of understanding for learning and problem solving
Proceedings of the first international workshop on Computing education research
Hi-index | 0.00 |
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!