The course gives an overview over basic formal grammars and abstract  machine models used in Computer Science. Understanding the inherent capabilities and limitations of computers is a fundamental question in computer science. To answer this question, this course define formal mathematical models of computation and study their relationships with formal languages. It consist of three central areas of the theory of computation: Automata, Computability, and complexity