Guide to Scientific Computing in C++ (Undergraduate Topics in Computer Science) 2nd Edition by Joe Pitt-Francis (PDF)

0

 

Ebook Info

  • Published: 2018
  • Number of pages: 435 pages
  • Format: PDF
  • File Size: 3.68 MB
  • Authors: Joe Pitt-Francis

Description

This simple-to-follow textbook/reference provides an invaluable guide to object-oriented C++ programming for scientific computing. Through a series of clear and concise discussions, the key features most useful to the novice programmer are explored, enabling the reader to quickly master the basics and build the confidence to investigate less well-used features when needed. The text presents a hands-on approach that emphasizes the benefits of learning by example, stressing the importance of a clear programming style to minimise the introduction of errors into the code, and offering an extensive selection of practice exercises.This updated and enhanced new edition includes additional material on software testing, and on some new features introduced in modern C++ standards such as C++11.Topics and features: presents a practical treatment of the C++ programming language for applications in scientific computing; reviews the essentials of procedural programming in C++, covering variables, flow of control, input and output, pointers, functions and reference variables; introduces the concept of classes, showcasing the main features of object-orientation, and discusses such advanced C++ features as templates and exceptions; examines the development of a collection of classes for linear algebra calculations, and presents an introduction to parallel computing using MPI; describes how to construct an object-oriented library for solving second order differential equations; contains appendices reviewing linear algebra and useful programming constructs, together with solutions to selected exercises; provides exercises and programming tips at the end of every chapter, and supporting code at an associated website.This accessible textbook is a “must-read” for programmers of all levels of expertise. Basic familiarity with concepts such as operations between vectors and matrices, and the Newton-Raphson method for finding the roots of non-linear equations, would be an advantage, but extensive knowledge of the underlying mathematics is not assumed.

User’s Reviews

Reviews from Amazon users which were colected at the time this book was published on the website:

⭐This is what happens when Fortran programmers learn some C and then decide they are ready to teach C++ to newcomers; it’s an abysmal failure. If you are an engineering student looking to learn C++, please do not get this book. I recommend

⭐. It does a substantially better job of introducing the basic elements of C++ and carries the reader through to some very high-level programming with little effort (the big project in the book is quite impressive, even for professional programmers).In Chapter 3, the authors discuss reading and writing to file streams. In every code snippet, they call the “close” member function on their fstream object. This is unnecessary as the fstream’s destructor will do that for them. It might seem pedantic, but they are setting the stage for how to think in C++. This is not how C++ programmers should think. Using RAII is a basic tenet of C++, and the authors get it wrong almost immediately.Chapter 4 is all about using “new” and “delete” in user code. This should never been done today (see C++ Core Guidelines). RAII is the de-facto resource control idiom in C++. I was hopeful that Chapter 6 (classes) would remedy this, but RAII is never discussed there.Chapter 5’s discussion about using pointers in interfaces never discusses the difference between owning and non-owning pointers. This is a massive area of easy confusion and dangerous territory for the newcomer. It is imperative to distinguish between these two ideas. They even advocate returning owning pointers from functions (Yikes!). Throughout, they confuse arrays with pointers to dynamically-allocated memory. These two things are not the same, and the so-called “decay rule” can really catch newcomers off guard. It’s best to stay away from these dangerous areas. The authors also introduce the concept of a module as they are defined in Fortran90. Yet, C++ has no such concept (they are being considered for possibly C++20).Chapter 8 has one of my favorite quotes from this book: “These containers and algorithms [from the STL] do not have many applications in scientific computing software and so we do not discuss these here.” What’s the first class they implement in Chapter 10? A vector. Sigh. Don’t worry, though. In Chapter 12, they use a std::vector! There are no further mentions of templates in the rest of the book. I honestly don’t know why it’s even in there.Their discussion of exception handling in Chapter 9 leaves out fundamental aspects of the exception handling model in C++: correctness (strong guarantee) and neutrality. These concepts cannot be “plugged in” as an afterthought, but must be considered at the very beginning of designing C++ software.All of this is bad; really bad. But it pales in comparison to this quote from Appendix B: “A structure is a collection of variables that are combined together. Structures can be thought of as very simple classes, but without the ability to declare functions, access privileges, or any other properties of classes other than variables.” This is completely wrong: a “struct” and a “class” in C++ are nearly identical; differing only in the default access specification and inheritance type. This really demonstrates the authors’ complete lack of understanding of C++ and it’s fundamental differences from the C language.In addition to these specific issues, the authors continuously use C-style casts where none are needed due to the type conversion rules laid out in the C++ standard. The book was published in 2012: a year after the ISO standard for C++11 was finalized and two major compiler vendors supported most of the language (gcc and clang). It’s absurd not to mention the new features of C++. The authors thought it prudent to enlighten the reader about function pointers, but didn’t offer any discussion about lambdas. A whole chapter on pointers without any mention of std::shared_ptr (available since TR03!) or std::unique_ptr is inexcusable.

⭐I am relatively new to computer programming – I am an economist by training, currently a couple years from a PhD working in empirical IO.My experience over the last 3 years has been in Matlab, Stata, Python, R and a small bit in EVIEWS (God save us). With my current project, I really needed to work in some MEX files into Matlab to speed things along. Without a doubt, this book has been clear, straight-forward, and concise. I don’t need a complete guide to “How a computer works” and already have experience in scientific computing, but this helped me greatly and in a short amount of time, to understand how C++ works. Still working on the last couple chapters, but have certainly gotten plenty to read C++, and enough to start attacking my current project.I am a fan of the examples that are straight and to the point. I am also a fan of the text’s explicit statement of “this is not important for this lesson and we’ll explain it later. For now just understand X.” All-in-all, a helpful, concise, practical guide.

⭐This is an outstanding text for anyone who is not concerned so much with the structure and nomenclature associated with C++ but its pure application towards writing programs for science based problems (e.g. Finite-Difference, Finite-Element). The authors assume no previous knowledge of programming only that you are familiar with compiling C++ code in your native environment (Windows,Mac, or Linux). There is no time wasted on silly programs that are unrelated to scientific and engineering, this however does limit the number of examples. The code blocks within the text are clear and short resulting in ease when trying to figure out what the code is doing. What makes this book really stand out is the clear and easy-to-understand chapters on pointers, object oriented C++ , and even parallel programming. To top it off the book has a modest price tag and is only 250 pages, making it a delightful read for anyone who wants to quickly pick up C++ for writing code to solve science/engineering problems. I strongly suggest this text if your only concerned with doing computational science via programming in C++, if your interested in computer science and software engineering this is definitely inadequate.

⭐I’ve found this book to be a pleasure to read. I recommend it for someone who wants to learn C++ for scientific computing. The authors use examples which are within the grasp of a typical undergrad engineering or math student. I think one of things that makes the book unique is that the examples are based on calculus (which is one of the things that makes it so nice). It seems to me that many intro — and advanced — programming texts (justifiably) concentrate on algorithms…sorting, searching, etc. This book rather only uses these concepts as they are needed to solve more interesting (in my opinion) calculus-based problems.

⭐Good Book.

⭐This book is a great first programing book, but it is to elementary for me.

⭐an informative good read.

⭐I’ve looked for a good book on scientific computing with C++ for months. Finally, I found this one. It is very concise, but still includes a lot of hands-on examples and exercises.

⭐Very concise and to the point. Buy only if you are interested in scientific computing and want start writing fairly quickly.

⭐Good book for beginners who wanting to study programming in c++. Essential base principles of the programming technique are presented here.

⭐Comme il est dit dans le titre, les exemples de code source sont illisibles pour la version Kindle (visualisée sous windows7). C’est à peine pensable d’avoir de telles surprises à l’heure du numérique.This book will not teach you all C++. However, it will teach you the aspects of the language that you need to implement scientific models.A great book by an author that have a deep understating of both C++ and scientific algorithms.

Keywords

Free Download Guide to Scientific Computing in C++ (Undergraduate Topics in Computer Science) 2nd Edition in PDF format
Guide to Scientific Computing in C++ (Undergraduate Topics in Computer Science) 2nd Edition PDF Free Download
Download Guide to Scientific Computing in C++ (Undergraduate Topics in Computer Science) 2nd Edition 2018 PDF Free
Guide to Scientific Computing in C++ (Undergraduate Topics in Computer Science) 2nd Edition 2018 PDF Free Download
Download Guide to Scientific Computing in C++ (Undergraduate Topics in Computer Science) 2nd Edition PDF
Free Download Ebook Guide to Scientific Computing in C++ (Undergraduate Topics in Computer Science) 2nd Edition

Previous articleGuide to Competitive Programming: Learning and Improving Algorithms Through Contests (Undergraduate Topics in Computer Science) by Antti Laaksonen (PDF)
Next articleComputational Information Retrieval 1st Edition by N. C.) Computational Information Retrieval Conference (PDF)