Theory of Computation Logo

Theory of Computation

Automata Theory, Formal Languages, Computability and Complexity

Course Information

Prerequisites

Textbook

Theory of Computation: Automata, Formal Languages, Computation, and Complexity

Course Description

This course introduces mathematical models of computation and provides a theoretical foundation for understanding languages, machines and computational complexity. It covers finite automata, regular languages, context-free languages, pushdown automata, Turing machines, decidability and complexity classes.

Course Outcomes

Course Deployment

CS222 – Course Deployment Document

Course Modules

Module 1: Finite Automata and Regular Languages

Topics Covered

  • Introduction to Theory of Computation
  • Deterministic and nondeterministic finite automata
  • Regular expressions and regular languages
  • Minimization of finite automata
  • Closure properties and pumping lemma

Learning Resources

Module 2: Context-Free Languages, Grammars and Pushdown Automata

Topics Covered

  • Context-free grammars and languages
  • Grammar simplification and normal forms
  • Ambiguity and closure properties of CFLs
  • Pushdown automata

Learning Resources

Module 3: Turing Machines, Computability and Complexity

Topics Covered

  • Turing machines and computational models
  • Variants of Turing machines
  • Recursive and recursively enumerable languages
  • Decidability and undecidability
  • Complexity classes P, NP and NP-Complete problems

Learning Resources