This is a book for computationalists, whether working programmers or anyone interested in methods of computation and algorithms. Where necessary, the underlying ideas are explained and the algorithms are formally presented. The C++ programming language i is used for low-level algorithms, and there is only a minimal set of features beyond plain C. For material, where technicalities in the C++ code would obscure the underlying ideas, the author presents either pseudo-code or, with arithmetical algorithms,