The authors combine the essential mathematical prerequisites for large-scale software development in one volume. Their philosophical view emphasizes the importance of computational abstractions as part of understanding the design process in software engineering. To this end, chapters discuss such topics as formal logic systems, recursive function theory, lambda calculus methods, topological considerations, concurrent processes, and computer-aided tools (Petri nets) in a formal mathematical context. This book requires a reasonable amount of mathematical maturity on the part of the reader, though it includes detailed sections on various applications of the methodologies. This book would be best used as a reference and not as a textbook, since it lacks exercises.