Teaching Formal Methods and Discrete Mathematics
This work targets computer science education to improve the adoption of formal methods in software engineering, but it is incremental as it builds on existing educational strategies.
The paper addresses the challenge of integrating formal methods into software industry by proposing to teach formal methods earlier in computer science curricula, specifically by combining them with discrete mathematics courses at the undergraduate level, and illustrates this approach with a development in FoCaLiZe.
Despite significant advancements in the conception of (formal) integrated development environments, applying formal methods in software industry is still perceived as a difficult task. To make the task easier, providing tools that help during the development cycle is essential but we think that education of computer scientists and software engineers is also an important challenge to take up. Indeed, we believe that formal methods courses do not appear sufficiently early in compter science curricula and thus are not widely used and perceived as a valid professional skill. In this paper, we claim that teaching formal methods could be done at the undergraduate level by mixing formal methods and discrete mathematics courses and we illustrate such an approach with a small develop- ment within FoCaLiZe. We also believe that this could considerably benefit the learning of discrete mathematics.