In CS 301 we explore the nature of computation and what it means to
compute. We study important models of computation such as finite
automata, push-down automata, and Turing machines, and investigate
their fundamental computational power. Topics include deterministic
versus non-deterministic computation, and a theoretical basis for the
study of NP-completeness.
Prerequisites: CS 102, CS 201
Suggested course(s) to take next: CS 302, CS 312