The Nature of Code

Daniel Shiffman, one of the geniuses behind the Processing language and the book Learning Processing has a really interesting book on more advanced concepts in computer science using Processing. It's called The Nature of Code and I can feel I'm going to be using it heavily in my next programming courses. The book covers lots of different simulations and algorithms: vectors and forces, physics simulations in general, cellular automata, fractals and even some AI stuff.

The github repo companion to the book (for python) is here.