A comprehensive introduction to automata theory that uses the novel approach of viewing automata as data structures. This textbook presents automata theory from a fresh viewpoint inspired by its main modern application, program verification, where automata are viewed as data structures for the algorithmic manipulation of sets and relations. This novel "automata as data structures" paradigm makes holistic connections between automata...