A Software Engineering Project Course with a Real Client

Abstract : At Carnegie Mellon University, we taught an introductory software engineering course that was organized around a project with a real deliverable for a real client. This case study describes the background and organization of the course and presents the lecture and project materials produced by the faculty and students of the course. Carnegie Mellon University has offered a course in software engineering since the early 1970s. Although its organization and position in the curriculum have changed over the years, the course has always had the primary objective of teaching undergraduate students something about the practical problems of building real-world software--groups of people must cooperate to understand just what problem is being solved and then create and integrate a collection of software modules that solve the problem. This traditionally has been a group-project course with a lecture component. In recent years it has been a senior-level elective; its prerequisites are intended to ensure that students have already studied medium-sized systems such as compilers and operating systems. Often students who select this course are considering entering the job market as software developers.