Computing Reviews

Discovering modern C++ :an intensive course for scientists, engineers, and programmers
Gottschling P., Addison-Wesley Professional,Upper Saddle River, NJ,2015. 480 pp.Type:Book
Date Reviewed: 09/28/16

This is not a conventional book teaching C++ programming. The author targets scientists and engineers, and teaches them the utilization of advanced C++ for scientific studies. There are a number of examples of scientific programming in the book, so readers can easily understand the programming principles in science and engineering. Further, the book covers the basic language and some new features in C++11 and C++14, and the readers can immediately apply the learned technologies to a modern programming environment. Another unique aspect of the book is that all C++ commands are printed in blue to facilitate readability.

This book is organized into seven chapters. The first chapter establishes fundamental C++ lingo, such as declarations, types, expressions, loops, and so on. Readers with C++ experience may skip the first chapter. More advanced topics are covered in the following chapters.

Chapter 2 starts with the core of object-oriented programming: classes. Classes are the templates of objects. Since this book is tailored for scientists and engineers, this chapter presents not only programming techniques of creating classes in C++, but also teaches how to strategically create classes in terms of scientific projects. Further, new features (for example, vectors, initializer lists, moves) in C++11 and C++14 are incorporated.

Generic programming, based on functions and classes, is covered next. To streamline scientific programming, the author emphasizes template-based programming and includes a number of examples utilizing templates to achieve desired computing tasks. Moreover, this chapter shows many functions that can exploit features of C++11 and C++14, such as forward references, forwarding, uniform initialization, and swap. Further, the author introduces functors, that is, function objects, which integrate concepts of classes and functions.

Libraries are the topic of chapter 4. It is recommended that programmers utilize existing libraries as much as possible. One major merit is that programmers can save time by developing their own computational assignments. The standard template library (STL) is an important one for all programmers to know. The author introduces a number of functions in STL and how to utilize them in terms of algorithm design. Other useful libraries covered in this chapter include numerics, time, concurrency, and scientific computing.

Chapter 5 addresses meta-programming. Meta-programs are programs on programs. The main feature of meta-programming is to utilize compiling to perform certain transformations and even computing. The author introduces many computational examples to illustrate the concepts. Further, meta-tuning techniques are introduced to optimize codes.

Object-oriented programming, which is the central idea of C++, is covered in chapter 6. This chapter is an advanced version of chapter 2. The traditional materials covered herein include derived classes, inheritance, virtual functions, and polymorphisms. Advanced topics include redundancy removal, multiple inheritance, dynamic selection, casting and conversion, and curiously recurring template patterns. The advanced topics are accompanied with real examples to ease learning.

Chapter 7 closes this book by presenting multiple scientific projects. The purpose of this chapter is to teach readers how to organize a scientific programming project in an efficient and effective way. However, while the concept can be easily taught, the implementations in real life are difficult. The author uses an example of building a solver of ordinary differential equations to illustrate an efficient implementation. The instruction covers strategic thinking and modular programming.

In general, the book is well written. The author walks readers through C++ technologies step by step. Numerous examples and sample code are given to provide readers with hands-on experience. This book will help elevate a scientist or an engineer to a more sophisticated level, and can also serve as a textbook for graduate students.

More reviews about this item: Amazon, iProgrammer

Reviewer:  Hsun-Hsien Chang Review #: CR144790 (1612-0863)

Reproduction in whole or in part without permission is prohibited.   Copyright 2024 ComputingReviews.com™
Terms of Use
| Privacy Policy