{'fraction_non_alphanumeric': 0.008830022075055188, 'fraction_numerical': 0.004415011037527594, 'mean_word_length': 5.255172413793104, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Stages in Teaching Formal Methods

This paper describes how a staged approach to the development of students’ abilities to engineer software systems applies to the specific issue of teaching formal methods. It reviews the scope of formal methods and the coverage of them in the Software Engineering volume of Computing Curriculum 2001, and then evaluates this coverage against a theoretical model for the stages through which students develop their practical skills at engineering software systems. In particular, the paper discusses the role of formal methods within the process of developing software systems, and shows that both practically and pedagogically it is important that students use at least some elements of formal methods in their earliest attempts at developing systems. From this it is shown that these basic elements of the methods need to be taught earlier than is currently recommended.