Pages: pp. 60-61

N. Giordano and H. Nakanishi, *Computational Physics*, 2nd ed., Benjamin Cummings, 2005, ISBN: 978-0131469907, 560 pages.

Figure

Nicholas Giordano's *Computational Physics* has long been a standard in introductory computational physics courses, and the second edition (with coauthor Hisao Nakanishi) is an even better text.

Many varieties of computational physics courses exist, so I'll use mine as a baseline. My students have, at a minimum, completed the first two semesters of a three-semester calculus-based physics course; most are a bit more advanced than that. There's no programming prerequisite for the course, so students start with a wide range of programming abilities. Because some of them have no programming experience, I teach the class in Python, which brings me to the first thing that sets this book apart from similar texts: it's "language agnostic." Instead of using one of the several good programming languages available, the authors wrote their examples in pseudocode. I based my textbook choice largely on this independence from any one particular language because I'm not aware of any text that uses Python.

However, the more I actually use this clear, English-based pseudocode in the classroom, the more I like it! It separates the magic from the incantation: students are encouraged to think about the way the program works, rather than the way the language works. It lets teachers focus the course on computational methods rather than computer programming. As a student, I was taught Basic, Pascal, C, and Fortran; each was presented as *the* language to learn at the time. I fully expect that during their careers, my students will use multiple new languages that we haven't even thought of yet, and I want them to know how to solve problems using a computer rather than how to program in "x."

Of course, students still have to become competent in some computer languages to really grasp the material. For students who wish to use Basic, Fortran, or C, the authors offer extensive code examples in those languages on their Web site ( www.physics.purdue.edu/~hisao/book).

I really like how the authors begin each section with a physics problem, and then introduce the techniques to solve that problem. This approach isn't unique, but it's well-implemented and consistent throughout—letting the physics select the tool set helps students keep a clear goal in mind throughout the process. Students aren't introduced to new computational techniques without first seeing their need. There's never a sense of "here's a tool, where can I use it?" but always, "here's a problem, what tools can I use?"

There's a lot more to be said about most types of computational tools than would fit in any readable chapter. The authors wisely limit each chapter's scope to the simplest method that will do the job and put the details about more complicated approaches in the appendices. This is nice because it lets instructors choose the material they want to cover more thoroughly or treat with basic coverage.

The text also has a good selection of suggested problems clustered at the end of each section. Most exercises are fairly straightforward, with more challenging problems occasionally thrown in. Each problem stands alone and usually addresses a single concept. Solutions typically require 20 to 50 lines of well-documented Python code, although this varies considerably with programming style, language, and quantity of comments. Personally, I prefer to give more project-oriented homework sets in which students work on multiple aspects of a larger problem, but the exercises serve as a good starting point for such projects.

The breadth of coverage is more than sufficient for a semester-long computational course. In addition to ordinary differential equations, the text covers orbital dynamics, oscillations, waves, chaos, diffusion, percolation, Monte Carlo techniques, electricity and magnetism, Schrödinger's equation, Ising models, molecular dynamics, and (briefly) interdisciplinary topics such as protein folding and cellular automata. The authors wrote the text in such a way that once instructors cover the first few chapters, it's easy to pick and choose individual topics depending on students' interests because there's no unnecessary linking of one chapter to another—it's possible to jump from chapter 6 on waves to quantum mechanics in chapter 10 without losing anyone.

Although I greatly appreciate the text's language-independent nature, this might be considered a possible weakness. If your students don't have previous programming experience, expect to incorporate considerable outside resources to fill this need. I typically dedicate the first two weeks of the semester to programming in general, with an emphasis on Python, before beginning the text. It has also been necessary to bring in self-generated example code. If you use Basic or Fortran—or to a lesser extent, C—example code is available on the authors' Web site; otherwise, expect to provide it yourself. Personally, the advantages of language independence outweigh this disadvantage, but your mileage might vary, and it's something to consider.

I'm very pleased with this text—the students like it, I've had good results using it in my course, and it interfaces extremely well with the conceptual emphasis I prefer for an undergraduate-level computational physics course.

Here's a partial list of the books received by the Books department. If you would like to review any of them, please contact department editor Mario Belloni at mabelloni@davidson.edu.

- D.L. Applegate et al.,
*The Traveling Salesman Problem: A Computational Study*, Princeton Univ. Press, 2007, ISBN: 978-0691129938, 606 pages. - F.L. Bauer,
*Decrypted Secrets*, Springer, 2007, ISBN: 978-3540426745, 474 pages. - N. Boccara,
*Essentials of Mathematica: With Applications to Mathematics and Physics*, Springer, 2007, ISBN: 978-0387495132, 539 pages. - B.G. Blundell,
*Enhanced Visualization: Making Space for 3-D Images*, Wiley-Interscience, 2007, ISBN: 978-0471786290, 425 pages. - M. Bramer,
*Principles of Data Mining*, Springer, 2007, ISBN: 978-1846287657, 354 pages. - A. Cornell and D. Ionescu, eds.,
*Real-Time Systems: Modeling, Design, and Applications*, World Scientific, 2007, ISBN: 978-9810244248, 504 pages. - I.D. Craig,
*Object-Oriented Programming Languages: Interpretation*, Springer, 2007, ISBN: 978-1846287732, 256 pages. - S.M. de Gyurky,
*The Cognitive Dynamics of Computer Science: Cost-Effective Large Scale Software Development*, Wiley, 2006, ISBN: 978-0471970477, 292 pages. - L. Diósi,
*A Short Course in Quantum Information Theory: An Approach From Theoretical Physics*, Springer, 2006, ISBN: 978-3540389941, 127 pages. - H. Gardner and G. Manduchi,
*Design Patterns for eScience*, Springer, 2007, ISBN: 978-3540680888, 401 pages. - J.-M. Hervouet,
*Hydrodynamics of Free Surface Flows: Modelling with the Finite Element Method*, Wiley, 2007, ISBN: 978-0470035580, 360 pages. - W.N. Holmes,
*Computers and People: Essays from The Profession*, Wiley-IEEE CS Press, 2006, ISBN: 978-0470008591, 324 pages. - B.R. Hunt, R.L. Lipsman, and J.M. Rosenberg,
*A Guide to Matlab: For Beginners and Experienced Users*, 2nd ed., Cambridge Univ. Press, 2006, ISBN: 978-0521615655, 311 pages. - J. Jantzen,
*Foundations of Fuzzy Control*, Wiley, 2007, ISBN: 978-0470029633, 230 pages. - P. Kattan,
*Matlab Guide to Finite Elements: An Interactive Approach*, Springer, 2007, ISBN: 978-3540706977, 430 pages. - D.C. Kozen,
*Theory of Computation*, Springer, 2006, ISBN: 978-1846282973, 426 pages. - S.M. Kuo, B.H. Lee, and W. Tian,
*Real-Time Digital Signal Processing: Implementations and Applications*, 2nd ed., Wiley, 2006, ISBN: 978-0470014950, 664 pages. - J. Rissanen,
*Information and Complexity in Statistical Modeling*, Springer, 2007, ISBN: 978-0387366104, 144 pages. - N. Santoro,
*Design and Analysis of Distributed Algorithms*, Wiley-Interscience, 2006, ISBN: 978-0471719977, 608 pages. - W. Sextro,
*Dynamical Contact Problems with Friction: Models, Methods, Experiments and Applications*, Springer, 2007, ISBN: 978-3540430230, 168 pages. - S. Sumathi and P. Surekha,
*LabVIEW-Based Advanced Instrumentation Systems*, Springer, 2007, ISBN: 978-3540485001, 631 pages. - P.D. Tetlow,
*The Web's Awake: An Introduction to the Field of Web Science and the Concept of Web Life*, Wiley-IEEE CS Press, 2007, ISBN: 978-0470137949, 239 pages.

Eric Ayars is an assistant professor of physics at California State University, Chico. His research interests include scanning probe microscopy, non-Newtonian fluids, and application of physics education research to the advanced laboratory experience for physics majors. Ayars has a PhD in physics from North Carolina State University. He is a member of the American Association of Physics Teachers, the American Physical Society, the Physics Instructional Resource Association, and the Council on Undergraduate Research. Contact him at ayars@mailaps.org.