An introduction to both the theory and practice of formal specification, the name given to the use of discrete mathematics in computer science for describing the function of both hardware and software systems. Poor specification often gives rise to severe problems in software and hardware installation. Throughout the book are numerous worked examples and exercises which include many real examples of software and computer systems. The book culminates with an introduciton to Z: this is a formal notation which is particularly useful for unambiguously specifying systems. The introductory text assumes a fairly low level of mathematics and the author uses an informal style, explaining terminology, thus aiming the book at computer science undergraduates coming to the subject for the first time and as a self-teaching book for industrial staff carrying out specification and design.