The document provides an overview of theory of computation. It defines computation as any type of information processing that can be represented as a precise algorithm. The theory of computation seeks to define algorithms formally and determine the capabilities and limitations of computation. It comprises three main areas: automata theory, computability, and complexity. Automata theory deals with solving simple decision problems. Computability determines which problems can be solved by computers. Complexity analyzes which problems can be computed efficiently. The document outlines a course on theory of computation covering these topics through examining machines, complexity classes, and the objectives of introducing different computation models and demonstrating uncomputable problems.