*MATLAB* and related software packages like *Mathematica*, *Maple* and *Mathcad* have really changed the way that scientific computing is taught and learned. It was not so long ago that scientific computing projects were seriously constrained by the absence of reliable software for basic mathematical functions. Faced with the need for a Fast Fourier Transform subroutine, for example, the student might write one, use code written by a previous student, or spend a lot of time trying to find more standard software. Often enough, the correctness and reliability of the software were unknown and the results of the overall project could easily be compromised. With reliable, well-tested, and well-documented software, the student can concentrate on the computational task itself and interpretation of the results.

In *An Introduction to Scientific Computing* (subtitled “Twelve Computational Projects Solved with *MATLAB*”), the authors present approaches to the numerical solution of problems drawn from a variety of applications. Those applications include signal and image processing, chemistry, thermal engineering, gas dynamics, fluid mechanics, elasticity, and computer-aided design. Most of the applications require numerical solution of partial differential equations. This is a graduate-level introduction and the pace is brisk.

The authors aim to teach the whole process of scientific computing, not just numerical analysis. Accordingly, the projects follow the typical steps of scientific computing: definition of the problem, mathematical modeling, numerical discretization, development of a mathematical algorithm, and programming. In addition, the authors place considerable emphasis on some of the practical issues that are not always considered in comparable texts: numerical checking of accuracy and stability, choice of boundary conditions, careful selection of methods for solving systems of linear equations, and comparison with exact solutions. Since discretization has an important role, the authors give extra attention to the main techniques of finite differences, finite elements, spectral methods, and wavelet analysis.

Each project begins with a summary of the mathematical and numerical topics involved, the field of application, and an indication of the level of difficulty. In the authors’ estimation, most projects are at the lower end of the difficulty scale; the two projects at the higher end of the scale require more sophisticated numerical analysis and computational experience.

The last section of each project includes sketches of solutions to all the associated exercises and a guide to the *MATLAB* scripts that are accessible from the book’s web site .

This is a strong text on scientific computing for advanced students in applied mathematics, the physical sciences and engineering. Although it is called an introduction, the book is most appropriate for students with some prior experience in scientific computing and at least a modest acquaintance with numerical analysis.

Bill Satzer (wjsatzer@mmm.com) is a senior intellectual property scientist at 3M Company, having previously been a lab manager at 3M for composites and electromagnetic materials. His training is in dynamical systems and particularly celestial mechanics; his current interests are broadly in applied mathematics and the teaching of mathematics.