Rooting Formal Methods within Higher Education Curricula for Computer Science and Software Engineering - A White Paper

This white paper argues that formal methods need to be better rooted in higher education curricula for computer science and software engineering programmes of study. To this end, it advocates (i) improved teaching of formal methods; (ii) systematic highlighting of formal methods within existing, `classical' computer science courses; and (iii) the inclusion of a compulsory formal methods course in computer science and software engineering curricula. These recommendations are based on the observations that (a) formal methods are an essential and cost-effective means to increase software quality; however (b) computer science and software engineering programmes typically fail to provide adequate training in formal methods; and thus (c) there is a lack of computer science graduates who are qualified to apply formal methods in industry. This white paper is the result of a collective effort by authors and participants of the 1st International Workshop on "Formal Methods, Fun for Everybody" which was held in Bergen, Norway, 2-3 December 2019. As such, it represents insights based on learning and teaching computer science and software engineering (with or without formal methods) at various universities across Europe.

[1]  Antonio Cerone,et al.  Teaching Formal Methods for Software Engineering – Ten Principles , 2013 .

[2]  Richard E. Pattis Teaching EBNF first in CS 1 , 1994, SIGCSE '94.

[3]  C. Newcombe,et al.  How Amazon web services uses formal methods , 2015, Commun. ACM.

[4]  Raymond T. Boute,et al.  Teaching and practicing computer science at the university level , 2009, SGCS.

[5]  Sander Vermolen,et al.  Supporting Formal Method Teaching with Real-Life Protocols , 2006 .

[6]  Wil M. P. van der Aalst,et al.  Process Mining , 2016, Springer Berlin Heidelberg.

[7]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[8]  Faron Moller,et al.  Techniques for modelling and verifying railway interlockings , 2014, International Journal on Software Tools for Technology Transfer.

[9]  Matteo Camilli,et al.  Formal verification problems in a big data world: towards a mighty synergy , 2014, ICSE Companion.

[10]  Nazareno Aguirre,et al.  An introductory course on programming based on formal specification and program calculation , 2009, SGCS.

[11]  Edition , 2018, Xenophanes von Kolophon.

[12]  Antonio Cerone From Stories to Concurrency: How Children Can Play with Formal Methods , 2021 .

[13]  Yasser Shoukry,et al.  Formal verification of neural network controlled autonomous systems , 2018, HSCC.

[14]  Martin Brain,et al.  A Lightweight Technique for Distributed and Incremental Program Verification , 2012, VSTTE.

[15]  Nancy Leveson,et al.  Are you sure your software will not kill anyone? , 2020, Commun. ACM.

[16]  LevesonNancy Are you sure your software will not kill anyone , 2020 .

[17]  Cole Schlesinger,et al.  One-Click Formal Methods , 2019, IEEE Software.

[18]  Robert L. Glass Loyal Opposition - New Answer to "How Important Is Mathematics to the Software Practitioner?" , 2000, IEEE Softw..

[19]  J. T. Lochner The Journal of Defense Software Engineering , 1999 .

[20]  Peter W. O'Hearn,et al.  Scaling static analyses at Facebook , 2019, Commun. ACM.

[21]  Zhang Guang Formal Methods for Software , 2002 .

[22]  Ciera Jaspan,et al.  Tricorder: Building a Program Analysis Ecosystem , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[23]  Wan Fokkink,et al.  Some Trends in Formal Methods Applications to Railway Signaling , 2012, FMICS 2012.

[24]  Sebastian Krings,et al.  Writing a Model Checker in 80 Days: Reusable Libraries and Custom Implementation , 2018, Electron. Commun. Eur. Assoc. Softw. Sci. Technol..

[25]  Alberto Leva,et al.  Dynamic Models for the Formal Verification of Big Data Applications Via Stochastic Model Checking , 2018, 2018 IEEE Conference on Control Technology and Applications (CCTA).

[26]  Michael Leuschel,et al.  ProB and Jupyter for Logic, Set Theory, Theoretical Computer Science and Formal Methods , 2020, ABZ.

[27]  C. A. R. Hoare,et al.  An axiomatic definition of the programming language PASCAL , 1972, Acta Informatica.

[28]  Joint Task Force on Computing Curricula Computer Science Curricula 2013: Curriculum Guidelines for Undergraduate Degree Programs in Computer Science , 2013 .

[29]  Antonio Cerone,et al.  Adapting to Different Types of Target Audience in Teaching Formal Methods , 2019, FMFun.

[30]  Faron Moller,et al.  Railway modelling in CSP||B: the double junction case study , 2012, Electron. Commun. Eur. Assoc. Softw. Sci. Technol..

[31]  Oliver Kullmann,et al.  The science of brute force , 2017, Commun. ACM.

[32]  Sebastian Krings,et al.  Experience Report on an Inquiry-Based Course on Model Checking , 2019, SEUH.

[33]  Guy L. Steele,et al.  The Java Language Specification, Java SE 8 Edition , 2013 .

[34]  Junfeng Yang,et al.  Formal Security Analysis of Neural Networks using Symbolic Intervals , 2018, USENIX Security Symposium.

[35]  Laura Davis The Student Becomes the Teacher , 2015 .

[36]  Brian Huffman,et al.  Continuous Formal Verification of Amazon s2n , 2018, CAV.

[37]  John Paul Gibson Formal Methods : Never Too Young to Start , 2008 .

[38]  Peter Csaba Ölveczky Teaching Formal Methods for Fun Using Maude , 2021 .

[39]  C. A. R. Hoare,et al.  An Axiomatic Definition of the Programming Language PASCAL , 1973, Acta Informatica.

[40]  Rustam Zhumagambetov Teaching Formal Methods in Academia: A Systematic Literature Review , 2021 .

[41]  Janet Elizabeth Barnes,et al.  Experiences in the Industrial use of Formal Methods , 2011, Electron. Commun. Eur. Assoc. Softw. Sci. Technol..

[42]  Sally Fincher,et al.  Computer Science Curricula 2013 , 2013 .

[43]  Jeannette M. Wing A specifier's introduction to formal methods , 1990, Computer.

[44]  Antonio Cerone Human-Oriented Formal Modelling of Human-Computer Interaction: Practitioners' and Students' Perspectives , 2016, STAF Workshops.

[45]  Min Wu,et al.  Safety Verification of Deep Neural Networks , 2016, CAV.

[46]  C. Humby,et al.  Process Mining: Data science in Action , 2014 .

[47]  Moussa Amrani,et al.  ML + FV = $\heartsuit$? A Survey on the Application of Machine Learning to Formal Verification , 2018, 1806.03600.

[48]  Robert W. Floyd,et al.  Assigning meaning to programs , 1967 .

[49]  Kwangkeun Yi,et al.  Engaging students with theory through ACM collegiate programming contest , 2002, CACM.

[50]  Faron Moller,et al.  Teaching Them Early: Formal Methods in School , 2021 .