Description Introduction to Languages and the Theory of Computation helps students make the connection between the practice of computing and an understanding of the profound ideas that defines it. The book's organization and the author's ability to explain complex topics clearly make this introduction to the theory of computation an excellent resource for a broad range of upper level students. The author has learned through many years of teaching that the best way to present theoretical concepts is to take advantage of the precision and clarity of mathematical language. In a way that is accessible to students still learning this language, he presents the necessary mathematical tools gently and gradually which provides discussion and examples that make the language intelligible.
Features
Streamlined Presentation of Topics: The author has made a number of changes to make it easier for students to understand ideas. Arguments have been condensed wherever it has been possible to do so with out sacrificing rigor. Proofs have been omitted or only sketched in cases where the idea is clear and the details add nothing but completeness and in places where there are extended prose passages, the prose has been condensed, long paragraphs have been broken up into shorter ones, and in many cases, steps in arguments and algorithms have been itemized numerically.
Organizational Changes: The first two chapters are combined into one to shorten the introductory material and move more quickly onto other topics and chapters 3-5 are combined into two chapters to help facilitate the coverage of finite automata before regular expressions.
Improved Exercises: The number of routine exercises have been increased to allow for more student practice and additional challenging exercises have been added to illustrate important ideas.
Examples: The examples have been updated with a focus toward selecting material that illustrates principles in the most effective and efficient manner possible.
Careful Balance of Theory with Application: There is an emphasis on presenting key concepts without losing the connection to real-life computer science applications.
Accessible Organization: The wealth of complex material in the book is carefully organized for maximum accessibility.
Gentle Introduction of Mathematical Tools: Martin's trademark ability to present complex mathematical tools in a gentle and gradual manner and in the context in which they are used makes this book unique among computational theory books and a favorite of instructors and students alike.
Wealth of Exercises: A wealth of exercises tested in the classroom and designed to provide both a thorough review of basic concepts and an opportunity for more challenging work contribute to Martin's excellence as a learning tool.
Table of Contents Preface Introduction Chapter 1: Mathematical Tools and Techniques Chapter 2: Finite Automata and the Languages They Accept Chapter 3: Regular Expressions, Nondeterminism, and Kleene's Theorem Chapter 4: Context-Free Languages Chapter 5: Pushdown Automata Chapter 6: Context-Free and Non-Context-Free Languages Chapter 7: Turing Machines Chapter 8: Recursively Enumerable Languages Chapter 9: Undecidable Decision Problems Chapter 10: Computable Functions Chapter 11: Introduction to Computational Complexity Index