Span academia and pragmatism with working examples

Maintain an easy to read narrative

Are just the right length ( so far! )

CMCS gives just enough theory to provide context. The readability of the text is helped out with anecdotes from the lives of the referenced mathematicians. CMCS takes on analysis of social networks, queuing theory, stochastic modeling, cellular automata and a bunch of other great subjects.
In Chapter 7, Self-organized Criticality, there is some coverage of modeling forest fires:
In 1992 Drossel and Schwabl proposed a cellular automaton that is an abstract model of a forest fire. Each cell is in one of three states: empty, occupied by a tree, or on fire.
The rules of the CA are:

An empty cell becomes occupied with probability p.

A cell with a tree will burn if any of its neighbors is on fire.

A cell with a tree will spontaneously burn, with probability f, even if none of its neighbors is on fire.

A cell with a burning tree becomes an empty cell in the next time step.

I couldn’t help pulling out PIL and gluing some Python together to try this out. Here’s what I came up with (converted to flash to keep filesize down):

Much of the book us still under construction and none of the referenced source URLs I tried were functional. That said, one suggestion I do have is to make more use of existing Python libraries. As an a example, the chapter on graphs includes the implementation of basic graph datastructures. This is understandable since this will no doubt be used in undergraduate classrooms, but there should at least be a pointer to NetworkX; a battle-tested warhorse that the reader should be aware of.
It’s a great read so far and I’m looking forward to seeing how the book evolves.