Walls and Mirrors

Last updated
Walls and Mirrors
Wallsandmirrors.jpg
Walls And Mirrors, Modula-2 Edition, 1988.
AuthorPaul Helman and Robert Veroff
Subject Computer science
Published1986
Media typePrint
ISBN 0-8053-8940-7 1st edition
001.642
LC Class QA76.6

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

Related Research Articles

Ada (programming language) High-level programming language first released in 1980

Ada is a structured, statically typed, imperative, and object-oriented high-level programming language, extended from Pascal and other languages. It has built-in language support for design by contract (DbC), extremely strong typing, explicit concurrency, tasks, synchronous message passing, protected objects, and non-determinism. Ada improves code safety and maintainability by using the compiler to find errors in favor of runtime errors. Ada is an international technical standard, jointly defined by the International Organization for Standardization (ISO), and the International Electrotechnical Commission (IEC). As of 2020, the standard, called Ada 2012 informally, is ISO/IEC 8652:2012.

Booch method

The Booch method is a method for object-oriented software development. It is composed of an object modeling language, an iterative object-oriented development process, and a set of recommended practices.

In imperative programming, a computer program is a sequence of instructions in a programming language that a computer can execute or interpret. In declarative programming, a computer program is a set of instructions.

Niklaus Wirth Swiss computer scientist

Niklaus Emil Wirth is a Swiss computer scientist. He has designed several programming languages, including Pascal, and pioneered several classic topics in software engineering. In 1984, he won the Turing Award, generally recognized as the highest distinction in computer science, for developing a sequence of innovative computer languages.

James Gosling Canadian computer scientist

James Gosling, often referred to as "Dr. Java," OC is a Canadian computer scientist, best known as the founder and lead designer behind the Java programming language.

Anders Hejlsberg Danish software engineer (born 1960)

Anders Hejlsberg is a Danish software engineer who co-designed several programming languages and development tools. He was the original author of Turbo Pascal and the chief architect of Delphi. He currently works for Microsoft as the lead architect of C# and core developer on TypeScript.

In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code. Rather, it is a description or template for how to solve a problem that can be used in many different situations. Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.

In object-oriented programming (OOP), encapsulation refers to the bundling of data with the methods that operate on that data, or the restricting of direct access to some of an object's components. Encapsulation is used to hide the values or state of a structured data object inside a class, preventing direct access to them by clients in a way that could expose hidden implementation details or violate state invariance maintained by the methods.

Robert Sedgewick (computer scientist) American computer scientist

Robert Sedgewick is an American computer scientist. He is the founding chair and the William O. Baker Professor in Computer Science at Princeton University and was a member of the board of directors of Adobe Systems (1990–2016). He previously served on the faculty at Brown University and has held visiting research positions at Xerox PARC, Institute for Defense Analyses, and INRIA. His research expertise is in algorithm science, data structures, and analytic combinatorics. He is also active in developing the college curriculum in computer science and in harnessing technology to make that curriculum available to anyone seeking the opportunity to learn from it.

Modula-3

Modula-3 is a programming language conceived as a successor to an upgraded version of Modula-2 known as Modula-2+. While it has been influential in research circles it has not been adopted widely in industry. It was designed by Luca Cardelli, James Donahue, Lucille Glassman, Mick Jordan, Bill Kalsow and Greg Nelson at the Digital Equipment Corporation (DEC) Systems Research Center (SRC) and the Olivetti Research Center (ORC) in the late 1980s.

Grady Booch American software engineer

Grady Booch is an American software engineer, best known for developing the Unified Modeling Language (UML) with Ivar Jacobson and James Rumbaugh. He is recognized internationally for his innovative work in software architecture, software engineering, and collaborative development environments.

Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functionality.

Addison-Wesley American publisher of textbooks and computer literature

Addison-Wesley is an American publisher of textbooks and computer literature. It is an imprint of Pearson PLC, a global publishing and education company. In addition to publishing books, Addison-Wesley also distributes its technical titles through the O'Reilly Online Learning e-reference service. Addison-Wesley's majority of sales derive from the United States (55%) and Europe (22%).

Elliot Bruce Koffman is a noted computer scientist and educationist. He is the author of numerous widely used introductory textbooks for more than 10 different programming languages, including Ada, BASIC, C, C++, FORTRAN, Java, Modula-2, and Pascal. Since 1974, he has been a professor of computer and information sciences at Temple University, Philadelphia, Pennsylvania.

Modula-2 is a structured, procedural programming language developed between 1977 and 1985 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 was later used for programming outside the context of the Lilith.

Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code: data in the form of fields, and code, in the form of procedures.