# MCS 441 Theory of Computation

## Study Guide

The final exam will be on Wednesday December 8 from 8-10 in 307 AH.
The exam will be cummulative covering chapter 1-5.1 but roughly 2/3 of the exam will cover material from chapter the later half of the course.
Office Hours Finals Week: Monday and Tuesday 1-3 or by appointment.

#### Chapter 1

You should be familiar with the following concepts
• Deterministic and Nondeterministic Finite Automata
• Regular Languages and their closure properties
• Regular Expressions
• Pumping Lemma
You should be able to
• Construct DFA and NFA to recognize languages
• Convert NFA to DFA recognizing same language
• Given a DFA/NFA M find a regular expression R such that L(R)=L(M)
• Given a regular expression find an NFA M with L(R)=L(M)
• Use the pumping lemma to prove that a language is not regular

#### Chapter 2

You should be familiar with the following concepts
• Context free languages, contex free grammars, derivations, derivation trees
• Pumping Lemma for CFL
• Push down automata
• Equivalence of CFL and languages recognized by PDA
• Chomsky Normal Form
You should be able to
• Construct CFGs to describe languages
• Figure out what language is described by a CFG
• Use the pumping lemma to prove a language is not context free
• Construct PDA to recognize languages
• Given a CFG construct a PDA that recognizes the same language.
• Given a PDA find a CFG describing the same language (You need to know this is possible but do not need to know the details of how to do this)
• Given a CFG find an equivalent CFG in Chomsky Normal Form

#### Chapter 3

You should be familiar with the following concepts
• Turing machines
• configurations, computation histories
• Turing decidable languages
• Turing recognizable languages
• Turing enumerable languages
You should be able to
• construct Turning machines to recognize or decide languages
Key Results that you should be able to sketch the proof of and apply.
• L is Turing recognizable if and only if it is Turing Enumerable
• any language recognized by a mulitape Turing machine is recognized by a single tape Turing machine.
• Closure of Turing decidable languages under union, intersection, complement, concatination and *.
• Closure of Turing recognizable languages under union, intersection, concatination and *.

#### Chapter 4

You should be familiar with the following concepts
• universal Turing machine
• countable sets
Key Results that you should be able to sketch the proof of and apply.
• There are uncountably many language but only countably many Turing machines (DFA, PDA, CFG...)
• Decidability of acceptance, emptyness and equality for DFA.
• Decidability of acceptance and emptyness for CFG
• Undecidability of Halting Problem
• L is Turing decidable if and only if it is Turing recognizable and co-Turing recognizable.

#### Chapter 5.1

You should be familiar with the following concepts
• linear bounded Turing machines
• proving decidability of problem A by reducing it to a know decidable problem B
• proving undecidability of problem A by reducing a known undecidable problem B to A
Key Results that you should be able to sketch the proof of and apply.
• undecidability of acceptance, emptyness and equality problems for TM.
• decidability of acceptance problem for linear bounded TM,
• undecidability of emptyness or equality problem for linear bounded TM
• undecidability of ALL and equality problem for CFL
• for f(n) a nice function like a polynomial, 2n, nlog_2(n), the class T_f={(A,x): A is a Turing machine and A accepts x in f(|x|) steps} and S_f={(A,x): A is a Turing machine and A accepts using at most f(|x|) tape cells} are decidable. [ Done in class]