Previous Section
 < Free Open Study > 
Next Section


Preface

Historically, a course on data structures has been a mainstay of most computer science departments. Over the last 18 years, however, the focus of this course has broadened considerably. The topic of data structures has now been subsumed under the broader topic of abstract data types (ADTs)-the study of classes of objects whose logical behavior is defined by a set of values and a set of operations.

The term abstract data type describes a comprehensive collection of data values and operations; the term data structures refers to the study of data and how to represent data objects within a program; that is, the implementation of structured relationships. The shift in emphasis is representative of the move towards more abstraction in computer science education. We now are interested in the study of the abstract properties of classes of data objects in addition to how the objects might be represented in a program. Johannes J. Martin put it succinctly: "... depending on the point of view, a data object is characterized by its type (for the user) or by its structure (for the implementor)."[1]

Three Levels of Abstraction

The focus of this book is on abstract data types as viewed from three different perspectives: their specification, their application, and their implementation. The specification perspective describes the logical or abstract level of data types, and is concerned with what the operations do. The application level, sometimes called the user level, is concerned with how the data type might be used to solve a problem, and is focused on why the operations do what they do. The implementation level is where the operations are actually coded. This level is concerned with the how questions.

Within this focus, we stress computer science theory and software engineering principles, including modularization, data encapsulation, information hiding, data abstraction, object-oriented decomposition, functional decomposition, the analysis of algorithms, and life-cycle software verification methods. We feel strongly that these principles should be introduced to computer science students early in their education so that they learn to practice good software techniques from the beginning.

An understanding of theoretical concepts helps students put the new ideas they encounter into place, and practical advice allows them to apply what they have learned. To teach these concepts to students who may not have completed many college-level mathematics courses, we consistently use intuitive explanations, even for topics that have a basis in mathematics, like the analysis of algorithms. In all cases, our highest goal has been to make our explanations as readable and as easily understandable as possible.

[1]Johannes J. Martin, Data Types and Data Structures, Prentice-Hall International Series in Computer Science, C. A. R. Hoare, Series Editor, Prentice-Hall International, (UK), LTD, 1986, p. 1.



Previous Section
 < Free Open Study > 
Next Section
Converted from CHM to HTML with chm2web Pro 2.85 (unicode)