Abstract
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
-
improved teaching of formal methods;
-
systematic highlighting of formal methods within existing, ‘classical’ computer science courses; and
-
the inclusion of a compulsory formal methods course in computer science and software engineering curricula.
These recommendations are based on the observations that
-
formal methods are an essential and cost-effective means to increase software quality; however
-
computer science and software engineering programmes typically fail to provide adequate training in formal methods; and thus
-
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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
Pattis [Pat94] even suggested teaching Extended Backus-Naur Form (EBNF) as the first topic in computer science. Not to facilitate presenting the syntax of a programming language, but because EBNF is a microcosm of programming. With no prerequisites, students are introduced to a variety of fundamental concepts in programming: formal systems, abstraction, control structures, equivalence of descriptions, the difference between syntax and semantics, and the relative power of recursion versus iteration.
- 2.
- 3.
The recent The Java®Language Specification, Java SE 14 Edition is 800 pages [GJS+20] and not easily digestible.
- 4.
AlphaZero is the descendant of AlphaGo, the AI that became known for defeating Lee Sedol, the world’s best Go player, in March of 2016.
- 5.
- 6.
This is not eased by the often poor error messages provided by formal method tools.
- 7.
- 8.
- 9.
- 10.
References
ACM. Computer science curricula 2013: Curriculum guidelines for undergraduate degree programs in computer science (2013). http://dx.doi.org/10.1145/2534860
ACM. Software engineering 2014: Curriculum guidelines for undergraduate degree programs in computer science (2015). https://doi.org/10.1145/2965631
Amrani, M., Lucio, L., Bibal, A.: ML + FV = \(\heartsuit \)? A survey on the application of machine learning to formal verification. arXiv Software Engineering (2018)
Barnes, J.E.: Experiences in the industrial use of formal methods. In: Romanovsky, A., Jones, C., Bendiposto, J., Leuschel, M., (eds.) AVoCS 2011. Electronic Communications of the EASST (2011)
Backes, J., Bolignano, P., Cook, B., Gacek, A., Luckow, K.S., Rungta, N., Schaef, M., Schlesinger, C., Tanash, R., Varming, C., Whalen, M.: One-click formal methods. IEEE Softw. 36(6), 61–65 (2019)
Brakman, H., Driessen, V., Kavuma, J., Bijvank, L.N., Vermolen, S.: Supporting formal method teaching with real-life protocols. In: Formal Methods in the Teaching Lab (2006). http://www4.di.uminho.pt/FME-SoE/FMEd06/Preprints.pdf
Blanco, J., Losano, L., Aguirre, N., Novaira, M.M., Permigiani, S., Scilingo, G.: An introductory course on programming based on formal specification and program calculation. SIGCSE Bull. 41(2), 31–37 (2009)
Boute, R.: Teaching and practicing computer science at the university level. SIGCSE Bull. 41(2), 24–30 (2009)
Brain, M., Schanda, F.: A lightweight technique for distributed and incremental program verification. In: Joshi, R., Müller, P., Podelski, A. (eds.) VSTTE 2012. LNCS, vol. 7152, pp. 114–129. Springer, Heidelberg (2012). https://doi.org/10.1007/978-3-642-27705-4_10
Camilli, M.: Formal verification problems in a big data world: towards a mighty synergy. In: Proceedings of ICSE 2014, pp. 638–641. ACM (2014)
Cooper, D., Clancy, M.: Oh! Pascal. W.W. Norton & Company Inc., New York (1982)
Chudnov, A., et al.: Continuous formal verification of Amazon s2n. In: Chockler, H., Weissenbacher, G. (eds.) CAV 2018. LNCS, vol. 10982, pp. 430–446. Springer, Cham (2018). https://doi.org/10.1007/978-3-319-96142-2_26
Calcagno, C., Distefano, D., O’Hearn, P.W., Yang, H.: Compositional shape analysis by means of bi-abduction. J. ACM 58(6), 26:1–26:66 (2011)
Cerone, A.: Human-oriented formal modelling of human-computer interaction: practitioners’ and students’ perspectives. In: Milazzo, P., Varró, D., Wimmer, M. (eds.) STAF 2016. LNCS, vol. 9946, pp. 232–241. Springer, Cham (2016). https://doi.org/10.1007/978-3-319-50230-4_17
Cerone, A.: From stories to concurrency: How children can play with formal methods. In: A. Cerone and M. Roggenbach (eds.) FMFun 2019, CCIS 1301, pp. 191–207. Springer, Cham (2017)
Cerone, A., Lermer, K.R.: Adapting to different types of target audience in teaching formal methods. In: A. Cerone and M. Roggenbach (eds.) FMFun 2019, CCIS 1301, pp. 106–123. Springer, Cham (2017)
Cerone, A., Roggenbach, M., Schlingloff, B.-H., Schneider, G., Shaikh, S.A.: Teaching formal methods for software engineering - ten principles (2015). https://www.informaticadidactica.de/uploads/Artikel/Schlinghoff2015/Schlinghoff2015.pdf
Deitel, P.J., Deitel, H.M.: Java - How to Program, 7th edn. Pearson Education Inc., Upper Saddle River (2007)
Distefano, D., Fähndrich, M., Logozzo, F., O’Hearn, P.W.: Scaling static analyses at Facebook. Commun. ACM 62(8), 62–70 (2019)
Dewar, R.B.K., Schonberg, E.: Computer science education: Where are the software engineers of tomorrow? CROSSTALK - The Journal of Defense Software Engineering (2018)
Floyd, R.W.: Assigning meaning to programs. Math. Aspects Comput. Sci. 19, 19–32 (1967)
Farrell, M., Wu, H.: When the student becomes the teacher. In: A. Cerone and M. Roggenbach (eds.) FMFun 2019, CCIS 1301, pp. 208–217. Springer, Cham (2017)
Garavel, H., Graf, S.: Formal Methods for Safe and Secure Computers Systems. Federal Office for Information Security (2013). https://www.bsi.bund.de/DE/Publikationen/Studien/Formal_Methods_Study_875/study_875.html
Paul Gibson, J.: Formal methods: never too young to start. In: Proceedings of FORMED 2008, pp. 151–160 (2008)
Gosling, J., et al.: The Java language specification - Java SE 14 Edition. Technical Report JSR-389 Java SE 2014, Oracle America, February 2020
Geleßus, D., Leuschel, M.: ProB and Jupyter for logic, set theory, theoretical computer science and formal methods. In: Raschke, A., Méry, D., Houdek, F. (eds.) ABZ 2020. LNCS, vol. 12071, pp. 248–254. Springer, Cham (2020). https://doi.org/10.1007/978-3-030-48077-6_19
Glass, R.L.: A new answer to “how important is mathematics to the software practitioner?”. IEEE Softw. 17(6), 136 (2000)
Gnesi, S., Margaria, T.: Some Trends in Formal Methods Applications to Railway Signaling, pp. 61–84 (2013)
Heule, M.J.H., Kullmann, O.: The science of brute force. Commun. ACM 60(8), 70–79 (2017)
Huang, X., Kwiatkowska, M., Wang, S., Wu, M.: Safety verification of deep neural networks. In: Majumdar, R., Kunčak, V. (eds.) CAV 2017. LNCS, vol. 10426, pp. 3–29. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-63387-9_1
Hoare, C.A.R., Wirth, N.: An axiomatic definition of the programming language PASCAL. Acta Inf. 2, 335–355 (1973)
ISO 7185:1990 Information technology - Programming languages - Pascal (1990)
James, P., Moller, F., Nga, N.H., Roggenbach, M., Schneider, S.A., Treharne, H.: Techniques for modelling and verifying railway interlockings. Int. J. Softw. Tools Technol. Transf. 16(6), 685–711 (2014)
Krings, S., Körner, P., Schmidt, J.: Experience report on an inquiry-based course on model checking. In: Tagungsband des 16. Workshops zu Software Engineering im Unterricht der Hochschulen, CEUR, vol. 2358 (2019)
Leveson, N.: Are you sure your software will not kill anyone? Commun. ACM 63(2), 25–28 (2020)
McCormick, J.W., Chapin, P.C.: Building High Integrity Applications with SPARK. Cambridge University Press, Cambridge (2015)
Mandrioli, C., Leva, A., Maggio, M.: Dynamic models for the formal verification of big data applications via stochastic model checking. In: Proceedings of CCTA 2018, pp. 1466–1471. IEEE Computer Society (2018)
Moller, F., O’Reilly, L., Powell, S., Denner, C.: Teaching them early: formal methods in school. In: A. Cerone and M. Roggenbach (eds.) FMFun 2019, CCIS 1301, pp. 173–190. Springer, Cham (2017)
Newcombe, C., Rath, T., Zhang, F., Munteanu, B., Brooker, M., Deardeuff, M.: How Amazon web services uses formal methods. Commun. ACM 58(4), 66–73 (2015)
Ölveczky, P.: Teaching formal methods for fun using Maude. In: A. Cerone and M. Roggenbach (eds.) FMFun 2019, CCIS 1301, pp. 58–91. Springer, Cham (2017)
Pattis, R.E.: Teaching EBNF first in CS 1. In: Proceedings of the Twenty-Fifth SIGCSE Symposium on Computer Science Education, SIGCSE 1994, New York, NY, USA, pp. 300–303. Association for Computing Machinery (1994)
Petrasch, J., Oepen, J.-H., Krings, S., Gericke, M.: Writing a model checker in 80 days: reusable libraries and custom implementation. In: Proceedings of AVoCS 2018, vol. 76, Electronic Communications of the EASST (2019)
Roggenbach, M., Cerone, A., Schlingloff, B.-H., Schneider, G., Shaikh, S.A.: Formal Methods for Software Engineering. Springer, Switzerland (2021)
Roggenbach, M., Moller, F., Schneider, S., Treharne, H., Nguyen, H.N.: Railway modelling in CSP\(\vert \)B: the double junction case study. ECEASST, 53 (2012)
Sekerinski, E.: Teaching the mathematics of software design. In: Formal Methods in the Teaching Lab (2006). http://www4.di.uminho.pt/FME-SoE/FMEd06/Preprints.pdf
Sun, X., Khedr, H., Shoukry, Y.: Formal verification of neural network controlled autonomous systems. In: Proceedings of HSCC 2019, pp. 147–156. ACM (2019)
Sadowski, C., van Gogh, J., Jaspan, C., Söderberg, E., Winter, C.: Tricorder: building a program analysis ecosystem. In: 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering, vol. 1, pp. 598–608 (2015)
Shilov, N.V., Yi, K.: Engaging students with theory through ACM collegiate programming contests. Commun. ACM 45(9), 98–101 (2002)
van der Aalst, W.: Process Mining - Data Science in Action, 2nd edn. Springer, Heidelberg (2016)
van Rossum, G., the Python development team: the Python Language Reference - Release 3.8.3. Python Software Foundation, June 2020. Retrieved 2020–06-15
Wing, J.: A specifier’s introduction to formal methods. IEEE Comput. 23(9), 8–22 (1990)
Wang, S., Pei, K., Whitehouse, J., Yang, J., Jana, S.: Formal security analysis of neural networks using symbolic intervals. In: Proceedings of Sec 2018, pp. 1599–1614. ACM (2018)
Zhumagambetov, R.: Teaching formal methods in academia: a systematic literature review. In: A. Cerone and M. Roggenbach (eds.) FMFun 2019, CCIS 1301, pp. 218–226. Springer, Cham (2017)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2021 Springer Nature Switzerland AG
About this paper
Cite this paper
Cerone, A. et al. (2021). Rooting Formal Methods Within Higher Education Curricula for Computer Science and Software Engineering — A White Paper —. In: Cerone, A., Roggenbach, M. (eds) Formal Methods – Fun for Everybody. FMFun 2019. Communications in Computer and Information Science, vol 1301. Springer, Cham. https://doi.org/10.1007/978-3-030-71374-4_1
Download citation
DOI: https://doi.org/10.1007/978-3-030-71374-4_1
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-71373-7
Online ISBN: 978-3-030-71374-4
eBook Packages: Computer ScienceComputer Science (R0)