Introduction to theory of computation. Topics include finite state automata, regular languages and grammars, pushdown automata, context-free languages and grammars, Turing machines, limits on algorithmic computation. Offered in spring.
Prerequisites
C- or higher in CSCI 140 and CSCI 162.
Sample Textbooks
Course Outcomes
Understating of various proof techniques. In particular, proofs by mathematical induction. Be able to demonstrate the ability to carry out proofs by induction for simple problems.
Define, interpret, and construct deterministic finite-state automata and non-deterministic finite-state automata; define, interpret, and construct regular expressions; apply these formalisms to practical programming problems.
Define, interpret, and construct context free grammar; define, interpret, and construct deterministic pushdown automata and non-deterministic pushdown automata; apply these formalisms to practical programming problems.
Explain the history, scope, and limits of Artificial Intelligence. Discuss and understand the social, ethical, legal, and philosophical aspects of Al; not only be knowledgeable about various application areas of AI but also be able to use AI tools.
Understand parsing techniques and study their application to theory of compiler design.
Understand the concept of Turing machines and their applications to computability.
Explain the concepts of computable function, the universal machine, the decision problem, and the difference between decidable and undecidable problems.
Major Topics Covered
Formal Languages
Alphabets and strings
Operations on strings
Languages
Operations on languages
Formal Grammars
Phrase structure grammars
Types of grammars and languages
Regular
Context-free
Non-context-free
Relationship between grammar and language types
Finite State Automata (FSA)
Deterministic Finite State Automata (DFSA)
Nondeterministic Finite State Automata (NFSA)
Equivalent automata
Equivalence of NFSA and DFSA
Finite State Languages (FSL)
Equivalence of FSL and regular languages
Applications
Properties of Regular Languages
Regular expressions (RE)
Equivalence of RE and FSA
Determining whether or not languages are regular
Applications
Pushdown Automata (PDA)
Deterministic Pushdown Automata (DPDA)
Nondeterministic Pushdown Automata (NPDA)
Non-equivalence of NPDA and DPDA
Equivalence of NPDA and context-free languages
Applications
Context-Free Languages (CFL)
Relationship of CFL to regular languages
Relationship of nondeterministic CFL to deterministic CFL
Determining whether or not languages are context-free