Invited Talk: Weaving Formal Methods into the Undergraduate Computer Science Curriculum

We can integrate formal methods into an existing undergraduate curriculum by focusing on teaching their common conceptual elements and by using state of the art formal methods tools. Common elements include state machines, invariants, abstraction mappings, composition, induction, specification, and verification. Tools include model checkers and specification checkers. By introducing and regularly revisiting the concepts throughout the entire curriculum and by using the tools for homework assignments and class projects, we may be able to attain the ideal goal of having computer scientists use formal methods without their even realizing it.

[1]  Daniel Jackson,et al.  A Nitpick Analysis of Mobile IPv6 , 1999, Formal Aspects of Computing.

[2]  Stephen J. Garland,et al.  Larch: Languages and Tools for Formal Specification , 1993, Texts and Monographs in Computer Science.

[3]  Edmund M. Clarke,et al.  Model Checking , 1999, Handbook of Automated Reasoning.

[4]  Daniel Jackson,et al.  Alloy: a lightweight object modelling notation , 2002, TSEM.

[5]  Yang Meng Tan,et al.  LCLint: a tool for using specifications to check code , 1994, SIGSOFT '94.

[6]  David Gries,et al.  The Science of Programming , 1981, Text and Monographs in Computer Science.

[7]  K. Rustan M. Leino,et al.  Extended static checking , 1998, PROCOMET.