num_pages: 408
description: An accessible and rigorous textbook for introducing undergraduates to computer science theoryWhat Can Be Computed? is a uniquely accessible yet rigorous introduction to the most profound ideas at the heart of computer science. Crafted specifically for undergraduates who are studying the subject for the first time and requiring minimal prerequisites the book focuses on the essential fundamentals of computer science theory and features a practical approach that uses real computer programs (Python and Java) and encourages active experimentation. It is also ideal for self-study and reference.The book covers the standard topics in the theory of computation including Turing machines and finite automata universal computation nondeterminism Turing and Karp reductions undecidability time-complexity classes such as P and NP and NP-completeness including the Cook-Levin Theorem. But the book also provides a broader view of computer science and its historical development with discussions of Turing's original 1936 computing machines the connections between undecidability and Gdel's incompleteness theorem and Karp's famous set of twenty-one NP-complete problems.Throughout the book recasts traditional computer science concepts by considering how computer programs are used to solve real problems. Standard theorems are stated and proven with full mathematical rigor but motivation and understanding are enhanced by considering concrete implementations. The book's examples and other content allow readers to view demonstrations ofand to experiment witha wide selection of the topics it covers. The result is an ideal text for an introduction to the theory of computation.
language: English
title: What Can Be Computed?: A Practical Guide to the Theory of Computation
publisher: Princeton University Press