{'fraction_non_alphanumeric': 0.02702702702702703, 'fraction_numerical': 0.003003003003003003, 'mean_word_length': 6.246376811594203, '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}}
Teaching Component-Based Software Engineering: A Formal Approach and Its Evaluation

This paper summarizes the RESOLVE approach for introducing component-based software engineering (CBSE) early in the undergraduate CS curriculum, and an evaluation of its impact at two institutions. Principles taught include a modular style of software development, human understandable, yet formally-specified component behavior, maintainability, as well as ‘classical’ issues such as efficiency analysis and reasoning. Qualitative and quantitative evaluations of student outcomes and end-to-end changes in student attitudes show mostly positive results that are statistically significant, confirming that (1) CBSE principles can be taught without displacing essential classical principles, (2) students can understand and reuse components based on mathematical specifications, and (3) student attitudes towards software engineering can be altered in directions heretofore often assumed to be difficult to achieve.