Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
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 (978-0-134383-58-3)
Date Reviewed: Sep 28 2016

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)
Bookmark and Share
  Featured Reviewer  
 
C++ (D.3.2 ... )
 
 
Object-Oriented Programming (D.1.5 )
 
 
Reference (A.2 )
 
Would you recommend this review?
yes
no
Other reviews under "C++": Date
A C++ toolkit
Shapiro J., Prentice-Hall, Inc., Upper Saddle River, NJ, 1991. Type: Book (9780131276635)
Dec 1 1991
Borland C++ handbook
Pappas C., William H. I., McGraw-Hill, Inc., New York, NY, 1991. Type: Book (9780078810152)
Feb 1 1993
Going from C to C++
Traister R., Academic Press Prof., Inc., San Diego, CA, 1993. Type: Book (9780126974126)
Apr 1 1994
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy