Book Description
The foundation of computer science is built upon the following questions: What is an algorithm? What can be computed and what cannot be computed? What does it mean for a function to be computable? How does computational power depend upon programming constructs? Which algorithms can be considered feasible? For more than 70 years, computer scientists are searching for answers to such qu- tions. Their ingenious techniques used in answering these questions form the theory of computation. Theory of computation deals with the most fundamental ideas of computer s- ence in an abstract but easily understood form. The notions and techniques employed are widely spread across various topics and are found in almost every branch of c- puter science. It has thus become more than a necessity to revisit the foundation, learn the techniques, and apply them with con?dence. Overview and Goals This book is about this solid, beautiful, and pervasive foundation of computer s- ence. It introduces the fundamental notions, models, techniques, and results that form the basic paradigms of computing. It gives an introduction to the concepts and mathematics that computer scientists of our day use to model, to argue about, and to predict the behavior of algorithms and computation. The topics chosen here have shown remarkable persistence over the years and are very much in current use.