{'fraction_non_alphanumeric': 0.01623686723973257, 'fraction_numerical': 0.0, 'mean_word_length': 5.201183431952662, '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}}
Providing for practice in Computer Science I

In Computer Science I, students are expected to master the tools of programming as well as learn how to apply them to solve problems. However, most Computer Science textbooks do not provide sufficient exercises or problems to help students practice what they learn. Without such practice, students tend to have a shallow understanding of the programming constructs, and are inadequately prepared to apply the constructs to solve problems. We may use courseware to address this problem of insufficient exercises and examples in textbooks. A courseware module may be built for each topic, which includes/presents an infinite source of examples as well as problems. We are currently building such courseware modules to teach the semantics of programming language constructs. Although the modules are designed for the C programming language, most of them can be easily generalized to any other language. Each of the courseware modules addresses three pedagogical concerns: analysis, synthesis and testing.