The Chemical Educator, Vol. 5, No. 2, S1430-4171(00)01373-8, 10.1007/s00897990373a, 2000 Springer-Verlag NewYork, Inc.

Scientific Computing: An Introductory Survey. By Michael T. Heath. WCB/McGraw-Hill,1997. 448 pp. Softcover, ISBN 0-07-027684-6. (A Solutions Manual is also available.)

Reviewed by: Dave Sept, University of California, San Diego, dsept@chemcca10.ucsd.edu

This book, as indicated by its title, provides a fairly complete survey of numerical/scientific computing written at a very accessible level. The target audience would include undergraduate students with a computer-science, math, physics, or engineering background, as well as graduate students and scientists in other disciplines requiring training in scientific computing. This book is not an in-depth treatise; it presents all of the concepts in a detailed but concise manner. As such, it would also serve as a useful reference for computational scientists who need a reminder or overview of a particular problem or method.

Heath does not simply provide the algorithms and concepts of numerical analysis and applied mathematics, but also shows the application and limitations of applying these ideas in a digital computing environment. The first chapter begins by discussing approximation, various sources of errors, and the challenges faced in expressing continuum mathematics in a discrete computational language. These concepts are then carried throughout the book and used to help the reader understand the differences between the various methods presented.

The best feature of this book, and what makes it significantly different from many other publications, is that it does not overwhelm the reader with pages of computer code. There are many such books available, but this book is practical in the sense that it does not require one to rewrite programs or subroutines, but rather provides a guide to the vast array of existing software. This has several advantages: it does not require an in-depth knowledge of programming, it lessens the probability of introducing errors in the computer code, and it makes the execution of the solutions much quicker and easier. Each chapter presents an introduction to a given problem, methods for solving the problem, and finally the software available to implement the various methods. This organization is followed consistently throughout the book and makes the presentation much more understandable. By providing this general guide to mathematical software and libraries, this book does not restrict its rea dership to a specific group of users (C vs. Fortran, MATLAB vs. Mathematica, etc.). Many times students begin using specific computational software based on what is available within their department or research group, but these choices may not always be optimal. This book educates the reader about the many possible computational packages available, many of which they may have not been exposed to, and the specific advantages that one may offer over another.

The only real problem with this book is that it is an overview and would quite often require supplementary materials. Some topics (e.g., fast Fourier transforms and random numbers) are presented at a very rudimentary level and might have been omitted in favor of more detail on other topics. Each chapter is completed with review questions, exercises, and computer problems. The computer problems are quite extensive and varied in terms of complexity. These would provide useful in-class examples or homework problems. One other nice feature is that the problems may be tackled using any of the suggested subroutines or software packages. This universality again makes the book accessible to a much larger audience.

In short, this book is what it says it is, an introductory survey of scientific computing. Although not exhaustive in its explanations, it provides references for further information and presents numerous examples to enable the reader to grasp the concepts. Also, because the book focuses on using existing software, it fills a niche that has largely been overlooked.