Life is a "game" or cellular automaton - an evolving computational state system - developed by a Cambridge mathematician named John Conway.

The idea is simple: start with a board of dimensions (x,y). Populate the board with an initial pattern of occupied and empty cells. In every turn, the rules are:

(i) if an empty cell has three neighbors, fill it next turn;

(ii) if an occupied cell has zero or one neighbor, it dies of loneliness; and

(iii) if an occupied cell has four or more neighbors, it dies of overcrowding.

You can get really strange, unpredictable behavior out of very simple initial patterns, and many mathematicians have spent a lot of time thinking about how this works.

What I have done is code the bare bones of Life using pygame. You specify the width and height of the board (in cells) on the command line. The script will create a random initial pattern on the board using python's random module, then begin running the simulation, updating as appropriate every turn. Try it - run it with a 30x30 board and see what happens. Watch the board closely - can you find any patterns which stay the same from round to round? Can you find any patterns which oscillate back and forth between one arrangement and another? Can you figure out why this happens? If you're feeling curious and ambitious, you could try rewriting my code to use your own non-random initial states, just to see what they transform into.