I've posted another Processing app. This one is a basic population genetic simulation. There are multiple variants within a population of reproducing individuals. Variants can mutate into other variants, and the frequencies of each change over time due to genetic drift and natural selection.
There are a number of basic results that are immediately obvious here, such as the conditions required for persistent variation in the population and the conditions required for the evolution of mutational robustness.