Welcome to the eighth edition of Walls and Mirrors! To emphasize our increasing concern for software security and its presentation here, Tim and I have revised our book’s formal title to Secure Data Structures and Algorithms with C++: Walls and Mirrors. As co-authors, we work together to integrate our years of professional C++ experience and attention to pedagogy into our presentation. Our goal is to give readers a superior foundation in data abstraction, object-oriented programming, recursion, and other modern problem-solving techniques while incorporating secure programming practices.

This edition reflects the many comments and suggestions we received from faculty and students alike as they used the previous editions. Where applicable, our C++ code now uses exceptions and C++20 features, while following safe and secure coding techniques such as those described in the SEI CERT Coding Standards. 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: We cover topics in this book dealing with the organization of 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 the foundational 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 the topics in this book now, you are likely to encounter them later. We hope that you enjoy reading this book, and that it serves as a useful reference tool for your future courses and career.