The authors have been teaching a freshman-level computational science course for many years. Their experience has helped produce this excellent introduction to scientific computing. Richard Hamming’s quote, “The purpose of computing is insight, not numbers,” inspires both the book’s title and its essence. The primary goal is to introduce students to fundamental, pervasive ideas of numerical computing. Along the way, MATLAB programs are written in accordance with these important ideas.
Object-oriented programming is top-down: big ideas are primary; they drive the nitty-gritty of implementation. The authors follow the same principle in organizing their text: They concentrate on the ideas of computing; MATLAB commands are introduced only to execute the ideas. So each of the fifteen chapters focuses not on a programming construct per se, but rather on a concept from scientific computing. In each of the two to four lessons that constitute the chapter, this concept is motivated through an example problem. (Sometimes multiple lessons build upon the same example.) Each lesson then unfolds as a gentle tutorial on how to solve the problem. As students grasp the nature of the problem, they are led to perceive also the nature of a solution approach. As students are coming to understand the nature of a solution, they consider the maneuvers required to implement the solution as an algorithm on a computer. As the form of this algorithm is becoming clear, the relevant MATLAB commands are introduced. By the end of the lesson, this top-down process has produced working MATLAB code that solves the problem. All of the MATLAB codes created in the lessons are available at the text’s website.
As an example, in chapter 2 students are to approximate the value of π by tiling a disk of radius 10 with unit squares and then counting the number of squares that lie completely inside the disk (and dividing by 100). The several rows of disks to be counted prompt the idea of iterating through the rows. Once a fragment of pseudo-code is in hand, the MATLAB syntax for a for-loop is introduced. (Of course, the authors present other ideas along the way. For example, they speed up the program execution by counting only the squares in a quarter of the disk and then multiplying by four. They consider the error in using this square-counting method to approximate π. They generalize the radius of the disk to be any integer n. To obtain a better approximation for a given n, they consider various ways of counting squares that lie only partially inside the disk.)
Strengthening the book’s conceptual focus are “Talking Points” at the end of many lessons. Some of these recapitulate and crystallize the lesson’s idea in concise, often memorable prose. Others point to possible extensions of the lesson. These brief discussions encourage the student to think like a numerical analyst. The talking points are reinforced by an “Exit Interview,” a two-page appendix of conceptual questions. Some examples: “A programmer working on a geometric problem complains about having to spend a lot of time figuring out how to handle situations near the boundary. Explain.” “What makes the problem of grid generation challenging?” “What is a ‘nearness’ metric? Give several examples.” “Quantify the efficiency difference between merge sort and insertion sort.”
Though imparting insight is the driving force behind the book, MATLAB praxis is still very much in the foreground. Each chapter opens with a brief discussion to motivate the ideas and problems. The very next item is a “Programming Preview” that lists the concepts covered in the chapter, the MATLAB commands used, and pointers to MATLAB instructional videos found on the book’s website. As reinforcement, each lesson’s penultimate section is a “MATLAB Review,” a summary of all the MATLAB commands used in the lesson. A section of MATLAB exercises caps the lesson. Easier exercises merely call for modifying the MATLAB scripts created in the lesson. More difficult exercises require new MATLAB code to be written. As many of the MATLAB problems treated in the lesson are stimulating and fun, most students will be eager to do the exercises.
Painlessly and seamlessly combining concept with praxis, the authors lead students to think numerically and to code their thinking in MATLAB. This book is a welcome resource, and I highly recommend it.
David A. Huckaby is an assistant professor of mathematics at Angelo State University.