This course serves as an introduction to formal language theory, finite-state machines and regular languages. Other topics in this course inlude stack machines and context-free languages, turing machines and computability. We will also touch upon undecidability and the Halting Problems.