This java applet is a simulation of a ripple tank. It demonstrates waves in two dimensions, including such wave phenomena as interference, diffraction (single slit, double slit, etc.), refraction, resonance, phased arrays, and the Doppler effect.
To get started with the applet, just go through the items in the Setup menu in the upper right. You can also draw on the screen with the mouse. The predefined setups are just starting points; you can modify the sources and walls as you desire.
Zip archive of this applet.