Provides an innovative hands-on introduction to
techniques for specifying the behaviour of software
components. It is primarily intended for use as a text book
for a course in the 2nd or 3rd year of Computer Science and
Computer Engineering programs, but it is also suitable for
self-study. Using this book will help the reader improve
programming skills and gain a sound foundation and
motivation for subsequent courses in advanced algorithms
and data structures, software design, formal methods,
compilers, programming languages, and theory.
The presentation is based on numerous examples and case
studies appropriate to the level of programming expertise
of the intended readership. The main topics covered are
techniques for using programmer-friendly assertional
notations to specify, develop, and verify small but
non-trivial algorithms and data representations, and the
use of state diagrams, grammars, and regular expressions to
specify and develop recognizers for formal languages.
Contents
Introduction
Part A : Algorithms
1. Specifying Algorithms
2. Verifying algorithms : Basic Techniques
3. Verifying Algorithms : Some Examples
4. Additional Verification Techniques
Part B : Data Representations
5. Data Representation : A Case Study
6. Data Representation : Additional Examples
Part C : Language Recognizers
7. Basic Concepts
8. State-Transition Diagrams
9. Regular Languages
10. Context-Free Languages
11. Parsing
Part D : Unimplementable Specifications
12. A Taste of Computability Theory
Appendices
A. Programming Language Reference
B. Hints for Selected Exercises
Index