Welcome To .: Theory of Computing (CSE-331)
Welcome To .: Theory of Computing (CSE-331)
Welcome To .: Theory of Computing (CSE-331)
Theory of Computing
(CSE-331)
Ashim Dey
Lecturer, CSE, CUET
1
Slide courtesy: Prof. Dr. M. Moshiul Hoque, CSE, CUET
Introduction
In theoretical computer science and mathematics,
the theory of computation is the branch that deals with
how efficiently problems can be solved on a model of
computation, using an algorithm.
Source : wiki
2
Introduction
The theory of computing is the study of
Efficient computation
Models of computational
processes
Their limits
3
Computations are designed for processing
information.
4
The study of computation aims at
providing an insight into the
characteristics of computations
Such an insight can be used
for predicting the complexity of desired
computations
for choosing the approaches they should
take
for developing tools that facilitate their
design
5
The study of computation reveals that
There are problems that cannot be solved
And of the problems that can be solved
There are some that require infeasible
amount of resources (e.g., millions of years
of computation time).
These revelations might seem
discouraging, but they have the benefit of
warning against trying to solve such
problems
6
Approaches for identifying such problems
are also provided by the study of
computation
On an encouraging note:
The study of computation provides tools for identifying
problems that can feasibly be solved, as well as tools
for designing such solutions
The study develops precise & well-defined terminology
for communicating intuitive thoughts about
computations
7
Theory of Computing divided into:
Automata Theory
• Analyze the behavior of machines and how they solve a problem
Computability Theory
8
Key Points
Why Study Automata?
What the Course is About
9
Automata Theory
Automata theory is the study of
abstract devices/machines.
Before there were computers, in the
1930’s, Alan Turing studied an abstract
machine that had all the capabilities of
today’s computers, at least as far as in
what they could compute.
What a computing machine could do?
what is could not do?
10
Course objectives
What is an algorithm?
What can and what cannot be computed?
When should an algorithm be considered
practically feasible?
Search answer more than 70 years?
To introduce fundamental ideas, models
& results that permeate computer science
11
Why studying?
Much of modern computer science is
based more/less on them
These ideas/models are powerful,
beautiful, excellent examples of
mathematical modeling that is elegant,
productive, & of lasting value
Besides, they are so much a part of the
history & the collective subconscious, that it
is hard to understand computer science
without first being exposed to them
12
Why Study Automata?
Finite automata are a useful model for many
important kinds of hardware & software:
1. Software for designing & checking the behavior of
the digital circuits
2. The lexical analyzer of a typical compiler, that is, the
compiler component that breaks the input text into
logical units, such as identifiers, keyword, &
punctuation.
3. Software for scanning large bodies of text, such as
collections of web pages, to find occurrences of
words, phrases, or other patterns
13
Why Study Automata?
4. Software for verifying systems of all types that have
a finite number of distinct states, such as
communications protocols or protocols for secure
exchange of information
14
How Could That Be?
Regular expressions are used in many
systems.
E.g., UNIX a.*b.
E.g., DTD(Document Type Definination)’s
describe XML tags with a RE format like
person (name, addr, child*).
Finite automata model protocols,
electronic circuits.
Theory is used in model-checking. 15
How? – (2)
Context-free grammars are used to
describe the syntax of essentially every
programming language.
Not to forget their important role in
describing natural languages.
And DTD’s taken as a whole, are really
CFG’s.
16
How? – (3)
When developing solutions to real
problems, we often confront the limitations
of what software can do.
Undecidable things – no program whatever
can do it.
Intractable things – there are programs, but
no fast programs.(Non-polynomial)
CSE331 gives you the tools.
17
Other Good Stuff in CSE-331
We’ll learn how to deal formally with
discrete systems.
Proofs: You never really prove a program
correct, but you need to be thinking of why
a tricky technique really works
We’ll gain experience with abstract
models and constructions
Models layered software architectures
18
Thanks
19