Bringing Extreme Programming to the Classroom

In this paper we discuss several features of XP we have used in developing curricula and courses at Duke University and the University of Northern Iowa. We also discuss those practices of XP that we teach as part of the design and implementation process we want students to practice as they develop programming expertise and experience. In theory the academic study of programming and software development should be able to embrace all of XP. In practice, however, we find the demands of students and professors to be different from professional and industrial software developers so that while we embrace the philosophy and change of XP we have not (yet) adopted its principles completely.