It is widely accepted that there is more to software construction than basic programming skills [13,11,15,16]. Professional software construction involves not only understanding some theoretical concepts, but also mastering appropriate tools and practices. In this paper, we present an undergraduate course in Software Construction and Maintenance, developed with the goal of introducing students to those key concepts, tools and practices.We first outline the content of that course, explaining how it fits within our undergraduate program. We then present a key element of that course-namely, its maintenance corpus along with its testing frameworks-used to concretely introduce students to various tools and practices, e.g., automatic test execution, build and configuration management, source code documentation, use of assertions, etc.