There are several theories of programming. The first usable theory, often called "Hoare's Logic", is still probably the most widely known. In it, a specification is a pair of predicates: a precondition and postcondition (these and all technical terms will be defined in due course). Another popular and closely related theory by Dijkstra uses the weakest precondition predicate transformer, which is a function from programs and postconditions to preconditions. lones's Vienna Development Method has been used to advantage in some industries; in it, a specification is a pair of predicates (as in Hoare's Logic), but the second predicate is a relation. Temporal Logic is yet another formalism that introduces some special operators and quantifiers to describe some aspects of computation. The theory in this book is simpler than any of those just mentioned. In it, a specification is just a boolean expression. Refinement is just ordinary implication. This theory is also more general than those just mentioned, applying to both terminating and nonterminating computation, to both sequential and parallel computation, to both stand-alone and interactive computation. And it includes time bounds, both for algorithm classification and for tightly constrained real-time applications.
A three-volume theory text designed to be used with or without the correlated software diskettes. Perfect for classroom use. Students learn new concepts in class with the workbook, then may review and reinforce those concepts in a computer lab. A combination text and workbook in three volumes. All areas of music theory are covered in a concise and practical manner and each level contains 28 lessons.
A guitar player's guide to music theory. This book is a complete theory course with recorded examples that put everything in an applicable, musical context. The recording includes all the musical examples and play-along tracks.