This well written first volume covers the basic principles and techniques of abstraction and modeling. It starts by providing the reader with a sound but simple basis for discrete mathematics before moving on to teach basic property and model-oriented specification principles and techniques. In addition, the reader will learn the essentials of functional, imperative, and parallel specification programming.