Integrating literate programming and cleanroom software engineering to teach software engineering skills

One goal of software engineering instructors is to educate students about principles underlying the various phases of the software life cycle. Instructors work towards preparing and equipping students with knowledge and experience that will accommodate the student’s transition from academia to industry. Thus, allowing the students to be an asset to the work force. To accomplish this, we as instructors need to teach students software engineering concepts at an early stage in their computer science education. In this paper, we examine how two successful methodologies, each proposed by a renowned computer scientist, can be integrated to further extend their roles into a tool useful for students in learning good software engineering skills. This integration expands the role of literate programming to several levels higher in the software life cycle and automates the box structure methodology to document the entire specification, design and implementation phases of a software system into a single artifact.