This book presents the concepts, methods, and results that are fundamental to the science of computing. The book begins with the basic ideas of algorithms such as the structure and the methods of data manipulation, and then moves on to demonstrate how to design an accurate and efficient algorithm. Inherent limitations to algorithmic design are also discussed throughout the second part of the text. The third edition features an introduction to the object-oriented paradigm along with new approaches to computation. Anyone interested in being introduced to the theory of computer science.