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