## CS 15-212: Fundamental Structures of Computer Science II |

We continue with signatures and structures by discussing views and data abstraction. Opaque signature ascription is generally recommended, to specify precisely which operations can be carried out on a type. Transparent ascription may be appropriate, however, if the signature is intended only to specify the minimum requirements that a structure must satisfy.

A * representation invariant* is a condition imposed on
an implementation of a type that must be preserved by all of the
operations on the type. Using appropriate representation invariants
can make code easier to build, understand, and maintain. Our running
example is the implementation of dictionaries using binary
search trees.

- Opaque and transparent ascription
- Representation invariants
- Binary search trees

John Lafferty lafferty@cs.cmu.edu