Tuesday September 7, 2010 7:12 PM
Testing Problem

Why a new type of problem?
One of the goals of our programming contest has always been to engage students in challenging problems that present real programming experiences. Originally this was done exclusively through traditional programming contest problems and even today such problems comprise the majority of our contest. About ten years ago, we became concerned that nothing in the contest forced the students to wrestle with the concept of a class. Starting in 2000, we introduced “Class-based problems”; these problems emphasize the understanding of abstraction and require the students to be able to read the specifications for a class and to use a class (that is new to them) based only upon those specifications and without being able to view the source code of the class. More recently, we have seen some evidence that students need to test their work more thoroughly; hence our desire to create a problem that requires more extensive testing.
Testing
Over the past decade, the role of testing in software development has grown significantly. Certain methodologies, such as test-driven development, have even elevated it to a pre-eminent position among a programmer’s tasks. Tools such as JUnit have been developed to facilitate all sorts of automated testing; many of these tools are now built-in to development environments. The result, in general, has been higher quality software. Often, in the “olden days”, the discovery of a test that caused a program to fail was viewed as a sad occasion; now such discoveries are expected as part of the development of a high-quality software product. It is our goal to incorporate such work, such discoveries, and their attendant rewards into our programming contest.








