# Walls and Mirrors

Walls And Mirrors is a computer science textbook, for undergraduates taking a second computer science course (typically on the subject of data structures and algorithms), originally written by Paul Helman and Robert Veroff. The book attempts to strike a balance between being too mathematically rigorous and formal, and being so informal, practical, and hands-on that computer science theory is not taught.
The "walls" of the title refer to the abstract data type (ADT) which has a wall between its public interface and private implementation. Early languages like Pascal did not build this wall very high; later languages like Modula-2 did create a much stronger wall between the two; and object-oriented languages such as C++ and Java implement walls using the class concept.
The "mirrors" of the title refer to recursion. The idea is of looking at a reflection in two mirrors placed in opposition to one another, so a repeated image is reflected smaller and smaller in them.

## Editions

The first edition, which used the language Pascal, was published in 1986.
An edition that used Modula-2 was published in 1988. Modula-2 had much better support for the sort of ADT the book taught than Pascal.
Later editions from the mid-1990s and the 2000s used C++ and Java, reflecting a fundamental shift in how computer science was taught. The original authors' names have been removed from the most recent editions of the book.

### Publication history

* Walls and Mirrors, Intermediate Problem Solving and Data Structures (Pascal edition) (1986), Paul Helman and Robert Veroff. ISBN 0-8053-8940-7 (Benjamin Cummings Publishing Co.)
* Walls and Mirrors, Intermediate Problem Solving and Data Structures (Modula-2 edition) (1988), Paul Helman and Robert Veroff. ISBN 0-8053-8945-8 (Benjamin Cummings Publishing Co.)
* Intermediate Problem Solving and Data Structures: Walls and Mirrors, Second Pascal edition, (1991), Paul Helman, Robert Veroff, and Frank M. Carrano. ISBN 0-8053-0321-9 (Benjamin Cummings Publishing Co.)
* Data Structures and Problem Solving with Turbo Pascal: Walls and Mirrors, (1993), Frank M. Carrano, Paul Helman, and Robert Veroff. ISBN 0-8053-1217-X (Benjamin Cummings Publishing Co.)
* Data Abstraction and Problem Solving with C++: Walls and Mirrors, (1995), Frank M. Carrano, Paul Helman, and Robert Veroff. ISBN 0-8053-1226-9 (Benjamin Cummings Publishing Co.)
* Data Abstraction and Problem Solving with C++: Walls and Mirrors, Second edition, (1998), Frank M. Carrano, Paul Helman, and Robert Veroff. ISBN 0-201-87402-4 (Addison Wesley Longman, Inc.)
* Data Abstraction and Problem Solving with Java: Walls and Mirrors, (2001), Frank M. Carrano and Janet J. Prichard. ISBN 0-201-70220-7. (Addison Wesley Longman, Inc.)
* Data Abstraction and Problem Solving with C++: Walls and Mirrors, Third edition, (2002), Frank M. Carrano and Janet J. Prichard. ISBN 0-201-74119-9 (Pearson Education, Inc.)
* Data Abstraction and Problem Solving with Java: Walls and Mirrors, Updated edition (2004), Frank M. Carrano and Janet J. Prichard. ISBN 0-321-19717-8 (.)
* Data Abstraction and Problem Solving with C++: Walls and Mirrors, Fourth edition, (2005), Frank M. Carrano. ISBN 0-321-24725-6 (Pearson Education, Inc.)
* Data Abstraction and Problem Solving with Java: Walls and Mirrors, Second edition, (2006), Frank M. Carrano and Janet J. Prichard. ISBN 0-321-30428-4. (Pearson/Addison Wesley)
* Data Abstraction and Problem Solving with C++: Walls and Mirrors, Fifth edition, (2007), Frank M. Carrano. ISBN 0-321-43332-7. (Pearson Education, Inc.)
* Data Abstraction and Problem Solving with Java: Walls and Mirrors, Third edition, (2011), Janet J. Prichard and Frank M. Carrano. ISBN 0-13-212230-8. (Addison Wesley, an imprint of Pearson)
* Data Abstraction and Problem Solving with C++: Walls and Mirrors, Sixth edition, (2013), Frank M. Carrano and Timothy M. Henry. ISBN 0-13-292372-6. (Pearson Education, Inc.)
* Data Abstraction and Problem Solving with C++: Walls and Mirrors, Seventh edition, (2017), Frank M. Carrano and Timothy M. Henry. ISBN 0-13-446397-8. (Pearson Education, Inc.)