Abstract
This is a report on teaching formal methods in the form of program verification for Master students in an applied computer science setting. The course was taught fully online, using recorded videos, synchronous sessions, the learning management system Moodle (https://moodle.org/), a distributed version control system and mostly biweekly graded practical assignments.
The first objective was to use the C language. It is a very relevant language in the sectors where verification is used in industry. The students already know the language, it also has interesting properties which can make verification challenging and shows the importance of edge cases in verification. The second objective was to teach the use of mature, industrial-strength tools in order to make the skills transferable to the later work situation of the students. This required tools that are actually used in industry to analyze C programs. The third objective was to introduce different verification approaches and to show the strengths and potential limitations of each. The selected approaches were deductive verification, abstract interpretation and model checking.
To achieve these goals, Frama-C with its WP and EVA plugin, the model checker CBMC and the Z3 SMT solver were selected. Because of the applied setting it was desired to use examples which did not require the use of interactive theorem proving for deductive verification.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
References
Barrett, C., et al.: CVC4. In: Gopalakrishnan, G., Qadeer, S. (eds.) CAV 2011. LNCS, vol. 6806, pp. 171–177. Springer, Heidelberg (2011). https://doi.org/10.1007/978-3-642-22110-1_14
Baudin, P., Filliâtre, J.C., Marché, C., Monate, B., Moy, Y., Prevosto, V.: ACSL: ANSI C specification language. CEA-LIST, Saclay, France, Technical report v1 2 (2008)
Blanchard, A.: Introduction to C program proof with Frama-C and its WP plug-in. https://allan-blanchard.fr/frama-c-wp-tutorial.html
Bühler, D.: EVA, an evolved value analysis for Frama-C: structuring an abstract interpreter through value and state abstractions. Ph.D. thesis, Rennes 1 (2017)
Bühler, D., et al.: Eva-the evolved value analysis plug-in. https://frama-c.com/download/frama-c-eva-manual.pdf
Burghardt, J., Gerlach, J., Hartig, K., Pohl, H., Soto, J.: ACSL by example. DEVICE-SOFT project publication. Fraunhofer FIRST Institute (2010)
Clarke, E.M.: The birth of model checking. In: Grumberg, O., Veith, H. (eds.) 25 Years of Model Checking. LNCS, vol. 5000, pp. 1–26. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-69850-0_1
de Moura, L., Bjørner, N.: Z3: an efficient SMT solver. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008. LNCS, vol. 4963, pp. 337–340. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-78800-3_24
Filliâtre, J.C., Paskevich, A.: Why3 – where programs meet provers. In: Felleisen, M., Gardner, P. (eds.) Programming Languages and Systems, pp. 125–128. Springer, Heidelberg (2013)
Kirchner, F., Kosmatov, N., Prevosto, V., Signoles, J., Yakobowski, B.: Frama-C: a software analysis perspective. Formal Aspects Comput. 27(3), 573–609 (2015)
Kroening, D., Tautschnig, M.: CBMC – C bounded model checker. In: Ábrahám, E., Havelund, K. (eds.) TACAS 2014. LNCS, vol. 8413, pp. 389–391. Springer, Heidelberg (2014). https://doi.org/10.1007/978-3-642-54862-8_26
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
Güdemann, M. (2021). Online Teaching of Verification of C Programs in Applied Computer Science. In: Ferreira, J.F., Mendes, A., Menghi, C. (eds) Formal Methods Teaching. FMTea 2021. Lecture Notes in Computer Science(), vol 13122. Springer, Cham. https://doi.org/10.1007/978-3-030-91550-6_2
Download citation
DOI: https://doi.org/10.1007/978-3-030-91550-6_2
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-91549-0
Online ISBN: 978-3-030-91550-6
eBook Packages: Computer ScienceComputer Science (R0)