''Walls And Mirrors'' is a
computer science
Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to Applied science, practical discipli ...
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
In computer science, an abstract data type (ADT) is a mathematical model for data types. An abstract data type is defined by its behavior (Semantics (computer science), semantics) from the point of view of a ''User (computing), user'', of the dat ...
(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
Class or The Class may refer to:
Common uses not otherwise categorized
* Class (biology), a taxonomic rank
* Class (knowledge representation), a collection of individuals or objects
* Class (philosophy), an analytical concept used differentl ...
concept.
The "mirrors" of the title refer to
recursion
Recursion (adjective: ''recursive'') occurs when a thing is defined in terms of itself or of its type. Recursion is used in a variety of disciplines ranging from linguistics to logic. The most common application of recursion is in mathematics ...
. 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
Pascal, Pascal's or PASCAL may refer to:
People and fictional characters
* Pascal (given name), including a list of people with the name
* Pascal (surname), including a list of people and fictional characters with the name
** Blaise Pascal, Fren ...
, was published in 1986.
An edition that used
Modula-2
Modula-2 is a structured, procedural programming language developed between 1977 and 1985/8 by Niklaus Wirth at ETH Zurich. It was created as the language for the operating system and application software of the Lilith personal workstation. It w ...
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++
C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
and
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
, 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. (
Benjamin Cummings Publishing Co.)
* ''Walls and Mirrors, Intermediate Problem Solving and Data Structures'' (Modula-2 edition) (1988),
Paul Helman and
Robert Veroff. (
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. (
Benjamin Cummings Publishing Co.)
* ''Data Structures and Problem Solving with Turbo Pascal: Walls and Mirrors'', (1993), Frank M. Carrano,
Paul Helman, and
Robert Veroff. (
Benjamin Cummings Publishing Co.)
* ''Data Abstraction and Problem Solving with C++: Walls and Mirrors'', (1995), Frank M. Carrano,
Paul Helman, and
Robert Veroff. (
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. (Addison Wesley Longman, Inc.)
* ''Data Abstraction and Problem Solving with Java: Walls and Mirrors'', (2001), Frank M. Carrano and Janet J. Prichard. . (Addison Wesley Longman, Inc.)
*''Data Abstraction and Problem Solving with C++: Walls and Mirrors'', Third edition, (2002), Frank M. Carrano and Janet J. Prichard. (Pearson Education, Inc.)
*''Data Abstraction and Problem Solving with Java: Walls and Mirrors'', Updated edition (2004), Frank M. Carrano and Janet J. Prichard. (.)
*''Data Abstraction and Problem Solving with C++: Walls and Mirrors'', Fourth edition, (2005), Frank M. Carrano. (Pearson Education, Inc.)
*''Data Abstraction and Problem Solving with Java: Walls and Mirrors, Second edition'', (2006), Frank M. Carrano and Janet J. Prichard. . (Pearson/Addison Wesley)
*''Data Abstraction and Problem Solving with C++: Walls and Mirrors'', Fifth edition, (2007), Frank M. Carrano. . (Pearson Education, Inc.)
*''Data Abstraction and Problem Solving with Java: Walls and Mirrors, Third edition'', (2011), Janet J. Prichard and Frank M. Carrano. . (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. . (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.)
1986 non-fiction books
1988 non-fiction books
2004 non-fiction books
Computer science textbooks