What is Computation?
• Computation is an effective method (an Algorithm!), which given a
problem with possibly a finite number of inputs, can produce an
output which can be recognized as a solution to the problem.
• 'Effective method' is here used in the rather special sense of a
method each step of which is precisely predetermined and which is
certain to produce the answer in a finite number of steps.
What is a Computer?
• A Computer is a physically realizable machine which can perform
computation.
• A Computer is a Formal System (abstract model). This is a direct
implication of the requirement that each step in an “Effective
Method” is precisely predetermined
What is Theory of Computation?
• It is the study about the ultimate capability of Computers, that is
what problems can be computed, what cannot and what can only
be solved partially by any computer which works under the
limitation of being “physically realizable” and employing only
“Effective Methods”.
• This requires working with abstract models of computers /
computation and as we will show, this has more to do with the
nature of problems rather than computers.
Why should I learn TOC?
• State machines
• Regular expressions
• Grammars
Why should I learn TOC?
• State machines
start
start
end
A formal system is one of several possible states. Every input or
stimulus causes a change of state
Why should I learn TOC?
• Grammar
• Compiler Design
• Parsing
What is Automata?
• Automata theory is the study of abstract machines and automata, as
well as the computational problems that can be solved using them. It
is a theory in theoretical computer science.
• Theoretical developments bear directly on what computer scientists
do today
• Finite automata, formal grammars: design/ construction of software
• Turing machines: help us understand what we can expect from a
software
• Theory of intractable problems: are we likely to be able to write a
program to solve a given problem? Or we should try an
approximation, a heuristic...
Applications
• Compiler Design
• Natural language processing
• Speech recognition
• Search engines (finding text pattern in web pages)
• Networking protocols
• VLSI design
Course Objectives
• Study concepts in automata theory
• Identify different formal language classes and their relationships
• Design grammars and recognizers for different formal languages
• Prove or disprove theorems in automata theory using its properties
• Determine the decidability and intractability of computational
problems
Course Organization
• Very broadly, the course will contain three parts:
• Part I) Regular languages : DFA, NFA
• Part II)Context-free languages : PDA
• Part III)Recursively enumerable languages : Turing machines & decidability
Text book
• Introduction to Automata Theory, Languages and Computation
• By J.E. Hopcroft, R. Motwani, J.D. Ullman
• 3rd Edition
• Addison Wesley/Pearson