This document discusses theory of computation and finite automata. It begins by defining theory of computation as dealing with the logic of computation using abstract machines called automata. It then defines basic terminology like symbols, alphabets, strings, and languages. Next, it introduces finite automata as the simplest machines that recognize patterns using a finite set of states. Deterministic finite automata and nondeterministic finite automata are described as the two types of finite automata, differing in their transition functions. Transition diagrams and tables are also presented as ways to represent finite automata.