Book Description
By the time students reach the end of a course on algorithm design, they are starting to ask questions about what computers can and cannot do: Is there a polynomial-time algorithm for every computational problem? Can every problem be solved using dynamic programming? Can every problem be formulated as a graph problem? What is a Computer and What Can It Do? takes advantage of the students' curiosity by answering their questions in the context in which they naturally arose: algorithms. What is a Computer and What Can It Do? is intended to serve as the primary textbook in an undergraduate course for computer science majors at the junior or senior level. Students should have previously taken a sophomore-level course in algorithms that includes a discussion of graph algorithms. This book may also be useful for people in fields other than computer science who have some background in algorithm design and who would like to develop an understanding of the main ideas of theoretical computer science without getting bogged down in minutiae. What is a Computer and What Can It Do? is short so that students can stay focused on understanding the problems that computers can and cannot solve rather than becoming overwhelmed by the details of automata theory and formal languages. This book is not a reference for professors. It is written for students to read ... and enjoy.