*Numerical Analysis: Theory and Experiments* by Brian Sutton is one of several recent textbooks for an undergraduate course on numerical analysis or scientific computing published by the Society for Industrial and Applied Mathematics (SIAM). Sutton's book is of high quality, and I am quite impressed. The topics covered in the book are well-developed by the author and there is an appealing mix of mathematical theory, illustrative examples, and consideration of issues for the practical application of numerical algorithms. While in my opinion the book is oriented more for students of mathematics, I do believe that students of science or engineering might find the book both interesting and accessible. Finally, one of the most interesting and outstanding features of *Numerical AnalysisL Theory and Experiments* is that it is thematic in a sense that will be described later in this review. First, I will discuss the overall structure and contents of the book.

*Numerical Analysis: Theory and Experiments* consists of seven parts which are divided up into 34 chapters. Each chapter ends with a notes section followed by a good number of exercises. In my estimation, most chapters correspond approximately to a single hour-long lecture, although there are some chapters consisting of several sections that may take a little longer to cover depending on what the lecturer opts to cover in class versus what the students are expected to read independently.

The seven parts of the book are:

- Computation. This includes MATLAB programming, floating-point arithmetic, and error analysis.
- Interpolation.
- Integration.
- Systems of linear equations. This covers Gaussian elimination, LU factorization, and conditioning of linear systems.
- Linear differential equations.
- Zero finding.
- Nonlinear differential equations.

There are also four appendices and a bibliography. Beginning with a study of polynomial interpolation, Chebyshev methods feature as a reoccurring theme throughout the book. This is a feature that contributes to the novelty and modernness in the presentation of numerical methods in *Numerical Analysis: Theory and Experiments*.

More precisely, the overarching theme of *Numerical Analysis Theory and Experiments*, which leads to the book's novelty, is a parallel treatment of two methods of function approximation. These are local approximation by piecewise polynomials over a uniform grid and global approximation by a single polynomial over a Chebyshev grid. These two techniques are initially developed in the part on interpolation and then are employed repeatedly in the parts on integration, linear differential equations, zero finding, and nonlinear differential equations. An aspect of this text that is different from many other numerical analysis texts at this level, which is a consequence of the global approximation method (*i.e.* the Chebyshev methods), is that the analysis of the accuracy of the resulting numerical methods is developed by exploiting the differentiability properties of functions not as functions defined on a subinterval of the real line but as functions defined and analytic in the complex plane. While the application of analytic functions in a first course in numerical analysis may seem unusual when comparing textbooks at that level, there is a benefit. To make this clear I will quote Sutton from the preface

This textbook is based on an undergraduate numerical analysis course that I have taught since 2007. In the years since the first offering, I have made significant changes to better reflect my understanding of how numerical analysts do their work and to include profound developments in the practice of numerical computation. As a result, my students are now solving problems that I considered prohibitively difficult a few years ago, and they have a better understanding of how their methods work.

Throughout the book, *Numerical Analysis: Theory and Experiments* uses MATLAB routines to implement and illustrate the numerical methods developed in the text. Relevant MATLAB code appears interspersed within the main part of the text and the author has also made available online the library of MATLAB routines that accompany the text. This library can be obtained from the author's github site.

I want to try to avoid understating too much the work that the author has obviously put into the notes and exercises sections in each chapter in the text. The notes serve to provide historical background, the origin of ideas and approaches covered in the book, and references to primary sources in the literature. While I believe that these notes are not likely to be used or fully appreciated by students on a first reading of the text, I do believe that there is a lot of value in having the notes in the text. For one, the notes provide both students and instructors with pointers for deeper explorations of topics and the particular approach established in *Numerical Analysis: Theory and Experiments*. This is especially relevant for this particular book because of the authors' emphasis on Chebyshev methods as promoted by Trefethen (and others), *e.g.*, in *Approximation Theory and Approximation Practice*, the Chebfun software, and *Exploring ODEs*. This approach may not be completely familiar to those that learned numerical analysis from older texts or that do not necessarily specialize in the area. Additionally, I think that the notes provided at the end of chapters in the book might serve as an very useful stepping stone on the path to student research in the areas of numerical analysis and scientific computing.

I find the exercises in *Numerical Analysis: Theory and Experiments* to be of very high quality. The author clearly put a great deal of effort into developing the exercise sets. After digesting a chapter, a student or reader is well-prepared to tackle the exercises for that chapter. This does not mean that the exercises are routine or boring, yet they are also not beyond the capability of the average dedicated student of mathematics. In the exercises, the student is asked to think deeply and will definitely learn from attempting the problems. In fact, the entire book is more about training the student in the ways of the numerical analyst than it is in teaching the specific facts of some number of different numerical algorithms. In fact, as Sutton states in the preface to the book ``The first part of the book begins to teach you to think like a numerical analyst.'' The reader may also enjoy supplementing the first chapter of *Numerical Analysis: Theory and Experiments* with the paper "The Definition of Numerical Analysis'' by Trefethen.

I believe that instructors and students alike will find *Numerical Analysis: Theory and Experiments* to be an interesting option for a course text for a first course in numerical analysis at the undergraduate level. While adopting this text for a course might require the instructor to adjust the selection of specific topics covered or the order in which they are covered, I believe that the efforts will be rewarded. I look forward to an opportunity to teach a course following *Numerical Analysis: Theory and Experiments*.

Jason M. Graham is an associate professor of mathematics at the University of Scranton.