Students in programming courses generally write “toy” programs, even when the size of the assigned projects is large. Programming assignments are written, superficially tested, graded, and then discarded. This approach to programming pedagogy leaves students unprepared for production programming in the workplace because the gap between writing toy programs and developing reliable software products is enormous. This paper describes how production programming can be effectively taught to undergraduate students in the classroom. The key to teaching such a course is using Extreme Programming methodology to develop a sustainable open source project with real customers, including the students themselves. Extreme Programming and open source project management are facilitated by a growing collection of free tools such as the JUnit testing framework, the Ant scripting tool, and the SourceForge website for managing open source projects.
Eric E. Allen, Robert Cartwright, Charles Reis