For Christmas I got Turtles, Termites, and Traffic Jams: Explorations in Massively Parallel Microworlds (Complex Adaptive Systems) by Mitchel Resnick. It's about how to understand and teach students to understand decentralised systems through simple simulations, such as ant nests, traffic jams or slime mold. The book is mainly about a language, StarLogo, which the author created to make simulating such systems easy, but I was hoping to convert some of them into JS.
Now I've tried to build the first simulation it describes - slime molds - on Khan Academy (here). Slime molds exist as independent amoeba-like organisms when conditions are good. When conditions are hard they start releasing a pheromone that lets them detect each other. This lets them form large clusters and form a slug-like creature and finally a fruiting body that releases spores. For a while it was thought that there must be special cells to organise this behaviour, but, as this simulation (and experiments on real organisms) show, it can be done with no central control.
The parameters I've chosen work OK, but I suspect they can be improved (to get larger clusters faster). It's quite fun to play with them. I like how the cells leave trails of pheromone behind them like smoke.