This course is divided into 3 parts. We begin with a study of regular
languages (DFAs, NFAs, Regular Expressions) along with context-free
grammars and PDAs. Then we move on to Turing Machines and Decidability.
Finally we will cover topics in complexity and try and understand what P,
NP, NP-Complete really mean.