The Evergreen Game for Students of Software Development

The software development process for implementing the game is driven by playing the game, losing at it, learning from why the loss happened and then doing a thorough requirements analysis. The game is an experiential learning adventure that leads to a review of fundamental concepts like data structure and solution space search and data structure transformation. The game is simple, based on a generalization of the widely popular Sudoku game. The players both produce "puzzles" and solve them.

The game encourages several good software development techniques.

Eases Transition to Pair Programming

The game leads in a natural way to pair work, be it pair programming or pair design. Initially the two players are the pair and the will learn from each other to play the game well. This will lead to joint requirements analysis etc.

Requirements Analysis

The game illustrates the importance of a careful requirements analysis which will lead to big savings. The requirements analysis leads to important concepts like minimizing and maximizing functions.

Software Correctness

If the software is not correct, you will lose at the game. The game solution consists of a loop and the correctness is demonstrated by proving a loop invariant correct.

Test Early

The game introduces the test early philosophy naturally. The game starts by creating first a "test" input to the solver.

Good separations of concerns

The design and implementation of the game offers numerous opportunities for practicing good separation of concerns. The solver should be broken down into several transitions of a transition system. In addition, the Relation manipulation software should be modularized and we provide a Java package for the students to use: Relation Interface and Implementation.

The definition of the game for life scientists (because constraint solving also has applications in biology): Evergreen Game

Karl J. Lieberherr, CCIS, Nostheastern University, April 2007