Norman Margolus described some of his ideas about simulating physics, programming lattice gasses, parameterizing reversible rules, playing and learning with interactive CA:

>In your todo list, my favorites are the features that make the play more interactive, such as tools for constructing initial states, and anything that makes it easier for users to define their own CA rules. For interesting rules to play with, most of my favorites are in the paper Crystalline Computation , though I do have some additional favorites since that paper was written.

Crystalline Computation:
http://people.csail.mit.edu/nhm/cc.pdf

>The rules that Tom and I are most attached to are the ones that are closest to physics, and those are mostly reversible lattice gases (or their partitioning equivalents). I would also say that lattice gases provide the best model both for simulation efficiency using machines with RAM, and the simplest and most flexible mental model for constructing interesting local dynamics. This may be a bit of a distraction for you, but my best understanding of how to efficiently simulate lattice gases is discussed in the paper, An Embedded DRAM Architecture for Large-Scale Spatial-Lattice Computations . I believe the technique discussed there for embedding spatial lattices into blocks of DRAM is also the best for efficient simulation on PC's.

An Embedded DRAM Architecture for Large-Scale Spatial-Lattice Computations:
http://people.csail.mit.edu/nhm/isca.pdf

>My perspective is that CA's (and particularly lattice gases) are a modern and accessible version of classical field theories. Physicists have long used them as toy models to understand real physical phenomena, but their importance goes much deeper than that. It doesn't seem to be widely appreciated that most of the quantum revolution consisted of exposing the finite state nature of Nature! We looked closely at what we thought was a continuous world and we saw ... pixels! There is also some inscrutable screwiness that came along with that, but if you focus on just the finite-state part of the new physics, reversible lattice gases should be considered fundamental theoretical models. To quote from the end of my "Crystalline Computation" paper,

>"Although people have often studied CA’s as abstract mathematical systems completely divorced from nature, ultimately it is their connections to physics that make them so interesting. We can use them to try to understand our world better, to try to do computations better—or we can simply delight in the creation of our own toy universes. As we sit in front of our computer screens, watching to see what happens next, we never really know what new tricks our CA’s may come up with. It is really an exploration of new worlds—live television from other universes. Working with CA’s, anyone can experience the joy of building simple models and the thrill of discovering something new about the dynamics of information. We can all be theoretical physicists."

>So I think it's important here that people can explore new rules, not just play with initial states. New rules create new universes that no one has ever seen before. As a way to make this more accessible for casual users, we could provide some parameterized reversible rules, where many values of the parameters give interesting universes, and let them explore. That's a bit more advanced than just playing with simulations from the CAM-6 book, but people will want to do both. The actual CAM-6 machine was very much a universe-exploration device, with a specialized language that let you write rules easily, and pressing single keys during a simulation let you start and stop the dynamics and run backwards and zoom in on the middle, and shift the entire space (arrow keys) and change the middle pixel or insert a small block of randomness in the middle, and "stain" the rendering in different ways to bring out different features. The actual hardware was lookup-table based, so all rules ran at the same speed. Each experiment defined some extra keys of its own (Capital letters were reserved for the experimenter, lower case and non-letters for the system. Adding "alias X <comment>" after a function definition attached it to the X key. Numbers pressed before pressing X would be available to the function as a parameter. Pressing "m" gave a menu of the keys the experimenter defined, and their <comment>s). Tommaso thought of it as being like having various keys and stops on an organ that let you make music. A GUI-centric interface might be better today, though single keys still have the advantage that you don't have to take your eyes off the simulation. Have you ever played with the hardware CAM-6? If you can find a vintage 286 or 386 machine, you could plug one in (I still have some somewhere) and play a bit, to get a better feeling for the spirit of it. I also still have a working CAM-8, but I think 3D lattice-gas simulations are out of scope for the moment. If, however, you can implement 2D lookup-table lattice-gas computation efficiently in JavaScript, that might be a good way to emulate the CAM-6 experiments, and make general lattice gases easy and efficient to play with. We defined and implemented a bunch of the CAM-6 experiments as very simple lattice gas experiments on CAM-8.

>As you can see, my personal inclination would be to emphasize the reversible stuff in the CAM-6 book, and the Crystalline Computation paper. And tell people they are being theoretical physicists!