Modified April 18, 2024.
Addison-Wesley ISBN 978-0-13-830868-1. April 2024.

Programming: Principles and Practice Using C++, Third Edition, will help anyone who is willing to work hard learn the fundamental principles of programming and develop the practical skills needed for programming in the real world. Previous editions have been used successfully by many thousands of students. This revised and updated edition
- Assumes that your aim is to eventually write programs that are good enough for others to use and maintain
- Focuses on fundamental concepts and techniques, rather than on obscure language-technical details
- Is an introduction to programming in general, including procedural, object-oriented, and generic programming, rather than just an introduction to a programming language
- Covers both contemporary high-level techniques and the lower-level techniques needed for efficient use of hardware
- Will give you a solid foundation for writing useful, correct, type-safe, maintainable, and efficient code
- Is primarily designed for people who have never programmed before, but even seasoned programmers have found previous editions useful as an introduction to more effective concepts and techniques
- Covers a wide range of essential concepts, design and programming techniques, language features, and libraries
- Uses contemporary C++ (C++20 and C++23)
- Covers the design and use of both built-in types and user-defi ned types, complete with input, output, computation, and simple graphics/GUI
- Offers an introduction to the C++ standard library containers and algorithms
ABOUT THE AUTHOR Bjarne Stroustrup is the designer and original implementer of C++, as well as the author of The C++ Programming Language and A Tour of C++, and many popular and academic publications. He is a professor of Computer Science at Columbia University in New York City. Dr. Stroustrup is a member of the US National Academy of Engineering, and an IEEE, ACM, and CHM fellow. He received the 2018 Charles Stark Draper Prize, the IEEE Computer Society's 2018 Computer Pioneer Award, and the 2017 IET Faraday Medal.
informit.com/aw informit.com/series/indepth stroustrup.com/Programming
Pearson, Addison-Wesley ISBN 978-0-13-830868-1
"Programming: Principles and Practice using C++ (3rd Edition)", aka PPP3, is an introduction to programming for people who have never programmed before. It will also be useful for people who have programmed a bit and want to improve their style and technique - or simply learn modern C++. It is designed for classroom use, but written with an eye on self study. Ealier versions of this book have been used as the basis for first programming classes for electrical engineering, computer engineering, and computer science students at Texas A&M University and in many other places.
People who have seen PPP2 will notice that PPP3 is about half its size. What I have done to keep the weight down is to
- strengthen the foundational chapters usually covered in a one-semester course, utilizing key parts of C++20 and C+23, and re-basing the Graphics/GUI chapter code on Qt for portability (e.g., to browsers and phones).
- placed the more specialized chapers (known as "broadening the view" in PPP2) on the Web for people to use as needed. See below.
- eliminate the pure reference material. You now can find more and more up-to-date material on the web, e.g. cppreference.com.
Here are some PPP3 samples
- Preface. What the book promises, and what it does not promise.
- Table of Contents.
- Chapter 0: Notes to the Reader. Some notes on the approach taken by the book.
- Chapter 10: A Display Model. A sample chapter. If you are a real novice, don't read this chapter quite yet. I post it to show teachers and more experienced readers where the book gets to in the 5th week or so (assuming two chapters a week). Also, to show off a little bit of contemporary C++.
These chapters were written using C++14, rather than C++23, but are still correct and introduce their topics in a reasonable manner.
None yet. See my book covers page for translations of earlier editions.