This applet displays interference patterns  based on a simple cellular automaton. It operates using a 2D cellular automaton, which simulates radiating wavefronts on the water's surface. There are six screens each consisting of four experiments  available using the "Preset" choice. It can be configured to illustrate diffraction, a doubleslit experiment, refraction, reflection  and the effect of a diffraction grating. The model stores a displacement and velocity at every point on the water's surface, and accelerates each point towards the position of the average of its vonNeumann neighbours. There's a more detailed description of the algorithm employed [here].
