CS/Math 361

This course introduces a formal framework for investigating both the computability and complexity of problems. We study several models of computation including finite automata, regular languages, contextfree grammars, and Turing machines. These models provide a mathematical basis for the study of computability theory  the examination of what problems can be solved and what problems cannot be solvedand the study of complexity theory  the examination of how efficiently problems can be solved. Topics include the halting problem and the P versus NP problem.