{'fraction_non_alphanumeric': 0.022641509433962263, 'fraction_numerical': 0.0, 'mean_word_length': 5.590062111801243, '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}}
The Software Engineering Apprentice

The Software Engineering Apprentice is a model of programming instruction that focuses on “programming in the large.” We have developed a set of innovative laboratory programming exercises that can be used in a Fundamentals of Computer Science course sequence. The exercises revolve around a series of sophisticated “case studies”: complete software applications that we developed to exemplify good software engineering methods. In addition to functioning source code, the case studies include other software development artifacts: specifications, test plans, and design documents. As an alternative to the “build it from scratch then throw it away” mentality of most assignments in a first course, the Software Engineering Apprentice approach demands that students build upon large pre-existing software applications. Instead of the “language feature of the week” program assignments that are typical in these courses, the exercises we developed are modelled after tasks found in a real software development environment...