Welcome To .: Theory of Computing (CSE-331)

Download as pdf or txt
Download as pdf or txt
You are on page 1of 19

Welcome to….

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.

They can be as simple as an estimation for


driving time between cities, & as complex
as a weather prediction.

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

 Computational Complexity 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

-finite number of states


-implement in hardware as a circuit/simple form of program
-use limited amount of data/using position in the code itself to
make the decision

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

You might also like