The course introduces students with fundamental concepts of automata theory and formal languages to form basic models of computation which provide foundation of many branches of computer science, e.g. compilers, software engineering, concurrent systems, etc.