This document describes a course on Theory of Computation. It provides information on the course objectives, which are to understand language hierarchies, construct automata for patterns, design context-free grammars, understand Turing machines and their capabilities, and understand undecidable and NP problems. It outlines 5 units that will be covered: automata fundamentals, regular expressions and languages, context-free grammar and languages, properties of context-free languages, and undecidability. It also provides the course outcomes and lists reference textbooks. The document then begins describing some key concepts from Unit 1, including formal proofs, additional proof forms, inductive proofs, and an introduction to finite automata.