This paper summarizes an approach for introducing component-based software engineering (CBSE) early in the undergraduate CS curriculum, and an evaluation of the impact of the approach at two institutions. Principles taught include a modular style of software development, an emphasis on human understanding of component behavior even while using formal specifications, and the importance of maintainability, as well as classical issues such as efficiency analysis and reasoning. Qualitative and quantitative evaluations of student outcomes and end-toend changes in student attitudes show mostly positive results that are statistically significant, confirming that (1) it is possible to teach CBSE principles without displacing “classical” principles usually taught in introductory courses, (2) students can understand and reuse formallyspecified components without knowing their implementations, and (3) student attitudes towards software engineering can be altered in directions heretofore ofte...
Murali Sitaraman, Timothy J. Long, Bruce W. Weide,