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 double-slit 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 von-Neumann neighbours.
There's a more detailed description of the algorithm employed [here].