'The treatment of state diagrams or grammars as specialized specification languages and embedding them into a more general context of specifying algorithms and data representations is an interesting approach that is quite novel ... I would like to single out both the author's approach and his style of presentation as very positive features of the book. Reading this book is definitely inspiring, and not just for a student.' Computing Reviews 'This book was written to support a short course in the second or third year of an undergraduate computer science, software engineering, or software design program. The prerequisites are fairly modest: some programming experience and some exposure to the most basic concepts of discrete mathematics and to the language of elementary logic. Using this book will help readers improve their programming skills and develop a solid foundation for subsequent courses in advanced algorithms and data structures, software design, formal methods, and compilers.' Zentralblatt fur Mathematik