Abstract
This paper summarises our experience in teaching Formal Methods to Computer Science and Software Engineers students from various universities around the world, including the University of Madeira in Portugal, the Pontificia Universidad Javeriana and the University of The Andes in Colombia, Carnegie Mellon University (CMU) in the USA, and Innopolis University (INNO) in Russia. We report challenges we have faced during the past 10 to 15 years when teaching formal methods using the Event B formalism, and describe how we have evolved the structure of our courses to respond to those challenges. We strive to help students to build skills on Formal Methods that they can employ later on in their future IT jobs in software Industry. Our goal is to promote the wide use of Formal Methods by software Industry. We consider that this goal cannot be achieved without first universities transferring to Industry students with a strong background in Formal Methods and related formal tools. Formal Methods are key to software development because they are based on Discrete Mathematics which can be used to properly reason about properties that the software one develops should have. We have conducted two surveys among our students, the first one at CMU and the second one at INNO, that we use here to document and justify our decisions in terms of the course structure. The first survey is about the use of Event B as main mathematical formalism, and the second one is about the organisation of teams of students within the classroom to work on software projects that use Event B as main mathematical formalism. Our hope is that our work can be reused by other Faculty to make their own decisions on course structure and content in the teaching of their Formal Methods courses.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Abrial, J.-R.: Modeling in Event-B: System and Software Design. Cambridge University Press, New York (2010)
Abrial, J.-R., Butler, M., Hallerstede, S., Hoang, T.S., Mehta, F., Voisin, L.: Rodin: an open toolset for modelling and reasoning in Event-B. Softw. Tools Technol. Transf. 12(6), 447–466 (2010)
Abrial, J.-R., Hallerstede, S.: Refinement, decomposition, and instantiation of discrete models: application to Event-B. Fundamentae Informatica 77(1–2), 1–28 (2007)
Arney, D.E., Jones, P., Lee, I., Ray, A.: Generic infusion pump hazard analysis and safety requirements version 1.0. Technical report, University of Pennsylvania (2009)
Cataño, N.: An empirical study on teaching formal methods to millennials. In: First International Workshop on Software Engineering Curricula for Millennials (SECM/ICSE), Buenos Aires, Argentina. ACM and IEEE Digital Libraries (2017)
Cataño, N., Barraza, F., García, D., Ortega, P., Rueda, C.: A case study in JML-assisted software development. In: Machado, P., Andrade, A., Duran, A. (eds.) Brazilian Symposium on Formal Methods (SBMF). Electronic Notes in Theoretical Computer Science, vol. 240, pp. 5–21, July 2009
Catano, N., Rueda, C.: Matelas: a predicate calculus common formal definition for social networking. In: Frappier, M., Glässer, U., Khurshid, S., Laleau, R., Reeves, S. (eds.) ABZ 2010. LNCS, vol. 5977, pp. 259–272. Springer, Heidelberg (2010). https://doi.org/10.1007/978-3-642-11811-1_20
Gibson, J.P., Méry, D.: Teaching formal methods: lessons to learn. In: 2nd Irish Workshop on Formal Methods, Cork, Ireland, 2–3 July 1998 (1998)
Google Inc.: The Android Platform (2017). http://developer.android.com/design/index.html
Jaume, M., Laurent, T.: Teaching formal methods and discrete mathematics. In: Proceedings 1st Workshop on Formal Integrated Development Environment, F-IDE 2014, Grenoble, France, 6 April 2014, pp. 30–43 (2014)
Leavens, G.T., Baker, A.L., Ruby, C.: Preliminary design of JML: a behavioral interface specification language for Java. ACM SIGSOFT 31(3), 1–38 (2006)
Leuschel, M., Butler, M.: ProB: a model checker for B. In: Araki, K., Gnesi, S., Mandrioli, D. (eds.) FME 2003. LNCS, vol. 2805, pp. 855–874. Springer, Heidelberg (2003). https://doi.org/10.1007/978-3-540-45236-2_46
Méry, D.: Teaching programming methodology using Event B. In: Habrias, H. (ed.) The B Method: from Research to Teaching, Nantes, France, July 2008. Henri Habrias, APCB
Meyer, B.: Applying “design by contract”. Computer 25(10), 40–51 (1992)
Rivera, V., Cataño, N., Wahls, T., Rueda, C.: Code generation for Event-B. Int. J. Softw. Tools Technol. Transf. (STTT) 19, 1–22 (2015)
Robinson, K.: Reflections on the Teaching of System Modelling and Design. AVOCS (2010)
Spivey, M.: An introduction to Z and formal specifications. Softw. Eng. J. 4(1), 40–50 (1989)
Stanley Warford, J.: An experience teaching formal methods in discrete mathematics. SIGCSE Bull. 27(3), 60–64 (1995)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2019 Springer Nature Switzerland AG
About this paper
Cite this paper
Cataño, N. (2019). Teaching Formal Methods: Lessons Learnt from Using Event-B. In: Dongol, B., Petre, L., Smith, G. (eds) Formal Methods Teaching. FMTea 2019. Lecture Notes in Computer Science(), vol 11758. Springer, Cham. https://doi.org/10.1007/978-3-030-32441-4_14
Download citation
DOI: https://doi.org/10.1007/978-3-030-32441-4_14
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-32440-7
Online ISBN: 978-3-030-32441-4
eBook Packages: Computer ScienceComputer Science (R0)