While this book began its life as an introductory text on computer science for first-year undergraduates with a solid foundation in mathematics, it has since been rewritten to be more appropriate for a wider audience, including more advanced students and professionals. The reader is expected to have a solid grounding in the elementary aspects of logic, set theory, algebra, the theory of functions, and mathematical induction.
The book considers, in sequence, the importance of rigor and accuracy; a survey of the required basic mathematical vocabulary; a characterization of definitions and specifications; a series of programming concepts (conditional expressions, local function definitions, recursive definitions, and sequences); induction as a tool for proving facts about recursively defined functions; tail recursion and iteration; partial and total correctness; the design of iterative algorithms; and finally two programming languages, Standard ML and Pascal. As the consideration of the two programming languages occupies fewer than nine pages, this can hardly be considered a standard text for a first course in programming. Nevertheless, a good case can be made for it as an introductory text on computer science--it introduces many of the concepts that underlie programming and that are essential to constructing programs that are likely to satisfy their specifications and to be made to work with comparative ease, that is, to require a minimum of semantic debugging.
On the whole, the book is well written, especially for having been (presumably) written in Polish and translated to (British) English. The book contains a reasonable set of exercises and solutions to them. It provides a fair and balanced treatment of its topic.