CENG 213

Theory of Computation

Abstract automata, especially finite state machines; push-down automata; and Turing machines. Formal languages, especially context-free languages. The relationship between automata and languages. Computability and solvability.

Course Objectives

To teach mathematical proof making.

To teach the concepts of automata, formal languages, and Turing machines.

By giving the theoretical grounds in the construction of computers, to ensure the apprehension of the limitations of computing machines.

Recommended or Required Reading

Lewis, H. R., & Papadimitriou, C. H. (1998). Elements of the Theory of Computation. ACM SIGACT News, 29(3), 62-78.
Sipser, M. (1996). Introduction to the Theory of Computation. ACM Sigact News, 27(1), 27-29.

Learning Outcomes

  1. To be able to classify language definitions.
  2. To be able to analyze problems and provide appropriate representations for them.
  3. To be able to show abstraction ability.
  4. To be able to identify some difficult problems in computer science. 
Topics
Introduction
Sets, Relations, and Functions
Basic Proof Techniques, Closures
Languages
Deterministic and Nondeterministic Finite Automata
Regular Expressions
Context-Free Grammars
Pushdown Automata
Turing Machines
Decidability
The Chomsky Hierarchy
Computational Complexity
NP-Completeness
NP versus P

Grading

Midterm 35%

Final 45%

Homework 20%

Instructor(s)

Research Assistant Dr.
Associate Professor

Assistant(s)