The book introduces the fundamental concepts of the theory of computation, formal languages and automata right from the basic building blocks to the depths of the subject. The book begins by giving prerequisites for the subject, like sets, relations and graphs, and all fundamental proof techniques. It proceeds forward to discuss advanced concepts like Turing machine, its language and construction, an illustrated view of the decidability and undecidability of languages along with the post-correspondence problem.