A comprehensive Capstone project in Computer Science I: getting the (instant) message

Providing meaningful programming assignments for students who are just learning how to write software is an important task. Problematic issues that arise include programs which are too small or too well-defined to be relevant to real-world software development, assignments which do not relate implementation to design in any significant way, assignments which ignore the importance and motivational aspects of team programming, and assignments which are simply not challenging or fun to write. Perhaps the most egregious error is assigning programs which do not require students to synthesize and reflect on earlier learning. Capstone projects are frequently used in other computer science courses for the purpose, but are not often cited in connection with CS1 courses. This paper documents a project given to a CS1 class which took the second half of the semester to complete and addressed most, if not all of the issues cited. In essence, the project was a small capstone project for beginning software developers. A discussion of the motivation, design, problems and successes experienced during the project are presented.