Welcome to the seventh edition of Data Abstraction & Problem Solving with C++: Walls and Mirrors:  Since the publication of the first edition, we all have gained experience with teaching data abstraction in an objectoriented way using C++. This edition reflects that experience and the many comments and suggestions received from faculty and students alike.

I am pleased to continue working with my co-author, Dr. Timothy Henry, who adds his professional experience with C++ and attention to pedagogy to our presentation. Our goal remains to give students a superior foundation in data abstraction, object-oriented programming, and other modern problemsolving techniques. All C++ code has been updated to use exceptions, follow safe and secure coding techniques such as those described in the SEI CERT Coding Standards, and use C++11 and C++14 features.

We hope that you enjoy reading this book. Like many others before you, you can learn—or teach—data structures in an effective and sustainable way.

A Note to Students: The topics that we cover in this book deal with the various ways of organizing data so that a given application can access and manipulate data in an efficient way. These topics are fundamental to your future study of computer science, as they provide you with the foundation of knowledge required to create complex and reliable software. Whether you are interested in designing video games or software for robotic-controlled surgery, the study of data structures is vital to your success. Even if you do not study all of the topics in this book now, you are likely to encounter them later. We hope that you will enjoy reading the book, and that it will serve as a useful reference tool for your future courses.