Computer Science needs mathematical languages to abstract away from particulars of computing machinery and to concentrate on systematicity, capacity, and efficiency of computing in the abstract. Theory of formal languages studies such languages while automata theory studies their acceptors. Both theories have found scientific and practical use in all areas of computer science and engineering. In fact, description of any computational process can be recast in formal language theory or automata theory. From this perspective, the theory can be seen as a vehicle for communicating the ideas clearly and precisely among computer scientists.
This course is an introduction to the topic.