{'fraction_non_alphanumeric': 0.014178482068390326, 'fraction_numerical': 0.0025020850708924102, 'mean_word_length': 5.521739130434782, '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}}
An Advanced Problem-Oriented Introduction to Imperative Programming with Modula-2

Traditional introductions to computer programming give undue prominence to the minutiae of imperative languages, rather than concentrating on constructs which better support desirable programming methodologies. It is proposed that the quality of introductory computer science teaching can be improved by contemplating the solutions to a selection of basic information processing problems, in the course of the development of which the 'correct' set of general and fundamental linguistic constructs will naturally emerge. Modula-2 is employed in the solution of a set of three such problems, in the course of which advanced concepts such as recursion, data abstraction and dynamic data structure implementation are treated thoroughly yet simply. Relatively complex and specialized concepts such as arrays are omitted. The general curriculum is adaptable to suit differing levels of prior relevant knowledge or complementary studies. Modula-2 proves to be a good choice as a vehicle for the presentation of this course, though there is a suggestion that a purely functional language would be a more fundamental choice.