The principle changes in this updated edition are additional material on software
testing and on some of the new features introduced in the C++11 standard. When
introducing this additional material, we have followed the same philosophy as when
writing the first edition of this book. That is, we focus on a concise discussion of the
key features that are most useful to the novice and intermediate programmer in the
field of scientific computing. We have found this an effective approach when
teaching this course to graduate students—once the basics have been mastered,
students then have the confidence to find out about less well-used features themselves when they are needed.
This second edition would not be as complete—or as enjoyable to update—
without discussions with colleagues and other readers of the first edition, including
those previously unknown to us who were kind enough to provide constructive
feedback. We would like to express our gratitude to all who contributed in this way
or offered their encouragement, and to the staff at Springer for inviting us to update
the first edition.