This course examines the mathematical models underlying computer science. Topics include finite automata, regular languages and regular grammars, context-free languages, simplification of context-free grammars and normal forms, push-down automata, Turing machines, limits of algorithmic computation and NP-completeness. Prerequisites: COSC 201; and MATH 200 or MATH 281.