The theory of computation is used to address challenges arising in many
computer science areas such as artificial intelligence, language
processors, compiler writing, information and coding systems,
programming language design, computer architecture and more. To grasp
topics concerning this theory readers need to familiarize themselves
with its computational and language models, based on concepts of
discrete mathematics including sets, relations, functions, graphs and
logic.
This handbook introduces with rigor the important concepts of this kind
and uses them to cover the most important mathematical models for
languages and computation, such as various classical as well as modern
automata and grammars. It explains their use in such crucially
significant topics of computation theory as computability, decidability,
and computational complexity. The authors pay special attention to the
implementation of all these mathematical concepts and models and
explains clearly how to encode them in computational practice. All
computer programs are written in C#.