A lot about *Biological Modeling and Simulation: A Survey of Practical Models, Algorithms, and Numerical Methods* can be discerned from its title. The goal of this text is to provide students interested in computational biology with a survey of many models and numerical techniques that they may need or encounter as researchers. Although there are many mathematical topics included, this text treats biological modeling from a biological, rather than mathematical, perspective. The author set out to provide a set of broadly useful mathematical methods and succeeded quite nicely in putting together a text that covers a large spectrum of computational techniques.

The book is designed for readers who have a background in biology with some understanding of computer science, calculus, linear algebra, and probability. They should also have some idea of how to implement algorithms in these areas. One of the distinctive features of this text is that most of the biological models incorporated in it are at the molecular level; the majority of the examples and applications presented deal with protein structure and genetic expression.

The text has 24 chapters organized into three sections, each section containing enough mathematical content to merit its own text. The first section of the text is called *Models For Optimization*. It starts off by discussing DNA sequencing through string and graph theory. It explores methods for finding a longest common subsequence when looking at two sequences and graph coloring problems, among others. The general idea of NP-completeness is introduced early and the traveling salesman problem is used to illustrate an NP-hard problem. The latter part of the first section introduces numerical methods for optimization. The Bisection Method and the Secant Method for finding zeros of continuous functions are given a nice introduction. Also included are the Newton-Raphson Method, Steepest Descent Method, and the Conjugate Gradient Method. The first section ends with linear programming and the Simplex Method and a short introduction to nonlinear programming.

The second section of the text is called *Simulation and Sampling.* In this section, probability distributions and random variables are introduced early. These ideas lead nicely to Markov Models, which are covered in good detail throughout the text. Both discrete and continuous time Markov Models are included along with many types of sampling methods. Most of the biological modeling discussed in this section again deals with DNA strings and sequences, and molecular evolution. The second half of this section introduces numerical methods for solving differential equations problems, including stochastic differential equations, including the Euler Method and Finite Differences. A chapter on partial differential equations introduces the heat equation, reaction-diffusion equation, and the convection-diffusion equation, all of which are solved numerically using finite differences.

The last section of the text is called *Parameter-Tuning*. Parameter tuning is first posed as an optimization problem, and a couple of chapters are devoted to it specifically. Gene structures are used to introduce Hidden Markov models, where the transitions from state to state are to be determined. A chapter on linear algebra is included here as well. Gaussian Elimination and LU-Decomposition are the major topics of discussion. A transition is then made to interpolation and extraction. Linear, polynomial, exponential, and general spline fits are illustrated along with a few extrapolation techniques such as Richardson Extrapolation. The latter part of the section deals with validation of models. Measures of fit and sensitivity analysis are discussed.

Probably the most useful and interesting chapters included for modeling purposes are the Case Study chapters. Four of these chapters can be found throughout the text: Sequence Assembly, Molecular Evolution, Simulating Cellular Biochemistry, and Inferring Gene Regulatory Networks. In each case study, a very nice synopsis is given about each research area, providing a suitable lead-in for a person interested in these areas. The author also explores how the methods and techniques discussed in the text apply, or why they may not, in modeling the biological phenomenon. Included at the end of each chapter is a section on references and further reading, making it accessible for an interested reader to attain further information on a specific topic readily.

Since the purpose of this text is to provide an overview of useful computational tools and methods, individual exercises have been left out. In addition, most problems and examples are proposed in pseudocode (algorithms), allowing the reader to implement the ideas using the software system of their choice. Unfortunately, this doesn’t provide enough hands-on practice in general. With these things in mind, I would find it difficult to use this text as a textbook for a course unless I could supplement the material with exercises and/or additional material such as actual computer simulations of the algorithms included.

Although the author explicitly mentions that an exhaustive treatment is not the goal, as a mathematician I found that most of the mathematical content has been too quickly brushed over for the sake of incorporating as many methods as possible. Granted that the goal of the author was to provide a survey for a biologist interested in computational methods, this text does provide a very good introduction to a variety of topics.

Joe Latulippe (jjlatulippe@csupomona.edu) is an assistant professor of mathematics at Cal Poly Pomona. He is a Project NExT Fellow (Sun Dot ’07), and is interested in mathematical biology and modeling. In his free time, Joe trains in Aikido (a non-violent Japanese martial art), and enjoys painting landscapes and drawing.