The three volume *Scientific Computing* by John A. Trangenstein is a comprehensive and largely self-contained treatment of the fundamental numerical mathematics necessary for addressing many of the mathematical problems that arise often in the physical sciences and engineering. Specifically, the texts cover algorithms for: numerical solution of linear, nonlinear, and ordinary differential equations; numerical solution of eigenvalue problems; numerical optimization, differentiation, and integration; and approximation of functions. In addition, a good deal of the mathematical background necessary for the development and analysis of the numerical algorithms is covered in the text, and there is considerable discussion of the computer implementation of the numerical algorithms in the book as well. To my knowledge, there is no other single work on modern scientific computing that is comparable in comprehensiveness. This set of texts is an original and valuable contribution to scientific computing literature. Anyone working in the applied mathematical sciences is certain to find a wealth of valuable information in these volumes.

The first volume of *Scientific Computing* is largely concerned with the numerical solution of systems of linear equations and of nonlinear equations in one variable. The first two chapters set the stage for everything else covered in the remainder of the three volumes. Specifically, chapter 1 of volume I provides an overview of the scientific computing workflow. That is, the process of mathematical modeling, analysis of the well-posedness of the mathematical problem, the construction of a numerical method for handling the mathematical problem numerically, the computer implementation of the numerical method, and the analysis of the numerical method. For each topic that is covered in the remainder of the three volumes, the presentation largely follows this scientific computing workflow where a (type of) mathematical problem is introduced and then each of the other steps in the workflow is carried out for that problem. Chapter 2 covers important general aspects of the computer implementation of numerical algorithms such as what is necessary to keep in mind when implementing numerical algorithms on a computer (*e.g.* computer arithmetic), and also covers certain aspects of programming languages that are particularly relevant for scientific computing. Volume I also contains a very interesting chapter on scientific visualization.

The second volume of *Scientific Computing* is largely concerned with the numerical solution of eigenvalue problems, systems of nonlinear equations, problems of constrained optimization, and iterative methods for the solution of linear systems. Before developing the numerical methods for handling eigenvalue problems the authors develops or reviews the necessary mathematical theory. There is nice treatment of the singular value decomposition and the chapter on eigenvalue problems together with the chapter on iterative linear algebra complete the coverage of numerical linear algebra for the three volumes.

The third and final volume of *Scientific Computing* covers “numerical calculus,” addressing the approximation of functions, numerical differentiation and integration, and the numerical approximation of solutions to initial and boundary value problems for ordinary differential equations. Volume III wraps up the more or less complete coverage of all of the most important topics from elementary numerical analysis and scientific computing. That is, the only necessary mathematical background for understanding the material presented in the three volumes of *Scientific Computing* is calculus and linear algebra as covered in standard undergraduate courses. To go further in numerical analysis beyond what is covered in here would likely require a greater mathematical sophistication.

There are many admirable features of *Scientific Computing* that are common to all three volumes. First, everything in all of the books is developed in complete detail in a clear and well-presented fashion. There are numerous exercises scattered throughout the book, and I believe that the exercises are both interesting and helpful for learning the material. It is also very easy to find what you are looking for in the texts so that they can easily be used as either references or as a course text. The algorithms constructed in the text are described in a way that makes their implementation pretty straightforward, and the author provides a great deal of helpful advice for either implementing algorithms or making use of existing software implementations of the algorithms. In addition to the helpful programming and software discussions in the texts, there is also a wealth of additional material online. Most of the online material is in the form of Fortran, C, or C++ code that can be freely downloaded.

In terms of use for a course text(s), the volumes of *Scientific Computing* could be used in a variety of ways. Certainly the appropriate chapters from the first two volumes can be used for a complete course in numerical linear algebra. A highly judicious choice of specific sections could probably be used as a basis for a semester long course in numerical analysis or scientific computing. I can easily believe that it would be very easy to develop a year-long course in numerical analysis or scientific computing based on the content from these volumes. Finally, I feel that the three volumes of *Scientific Computing* are ideally suited as references for students entering into a graduate program in applied mathematics or a related field.

One final note: those that find the three volumes of *Scientific Computing* interesting should note that Trangenstein has also written two texts on the numerical solution of partial differential equations: *Numerical Solution of Elliptic and Parabolic Partial Differential Equations* and *Numerical Solution of Hyperbolic Partial Differential Equations*. While I am only familiar with the first text, I can say that it has a very similar feel to the three volumes of *Scientific Computing*. Thus, the three volumes not only prepare the reader for advanced study of texts in the numerical analysis of partial differential equations, they also make a handy reference to accompany the two more advanced books.

Jason M. Graham is an assistant professor in the department of mathematics at the University of Scranton, Scranton, Pennsylvania. His current professional interests are in teaching applied mathematics and mathematical biology, and collaborating with biologists specializing in the collective behavior of groups of organisms.