Theory of Computation and Compiler Design - Introduction PDF
Theory of Computation and Compiler Design - Introduction PDF
Compiler Design
Course Code: CSE2004
Course Type: LT
Credits: 4
Taught by Ashish Kumar Sahu
Course Objectives:
To introduce Formal Languages, Automata Theory and Abstract models
of Computation and Computability.
To gain knowledge in computational theory.
To realize the theoretical concepts and techniques involved in the
software system development
To provide an insight into compiler design concepts.
Pre-requisites
• Data Structures
• Discrete Structures
3
Required Textbook
• Introduction to Automata Theory, Languages and Computation
• By J.E. Hopcroft, R. Motwani, J.D. Ullman
• 3rd Edition
• Addison Wesley/Pearson
• Author: Peter Linz profile imagePeter Linz
Publisher: C. Heath and Company125 Spring St. Lexington, MAUnited States
4
Homework Submission Policy
5
Homework Policy
• Cheating:
• Helping others, getting help, looking up website for
solutions, etc.
• Students caught cheating will be awarded by 0.
6
Introduction to Automata
Theory
7
What is Automata Theory?
• Study of abstract computing devices, or “machines”
• Automaton = an abstract computing device
• Note: A “device” need not even be a physical hardware!
• A fundamental question in computer science:
• Find out what different models of machines can do and cannot do
• The theory of computation
• Computability vs. Complexity
8
(A pioneer of automata theory)
Alan Turing (1912-1954)
9
Theory of Computation: A Historical
Perspective
1930s • Alan Turing studies Turing machines
• Decidability
• Halting problem
Regular Context-
(DFA) free Context-
Recursively-
(PDA) sensitive
enumerable
(LBA)
(TM)
12
The Central Concepts of
Automata Theory
13
Alphabet
An alphabet is a finite, non-empty set of symbols
• We use the symbol ∑ (sigma) to denote an alphabet
• Examples:
• Binary: ∑ = {0,1}
• All lower case letters: ∑ = {a,b,c,..z}
• Alphanumeric: ∑ = {a-z, A-Z, 0-9}
• DNA molecule letters: ∑ = {a,c,g,t}
• …
14
Strings
A string or word is a finite sequence of symbols chosen from ∑
• Empty string is (or “epsilon”)
15
Powers of an alphabet
Let ∑ be an alphabet.
• ∑* = ∑0 U ∑1 U ∑2 U …
• ∑+ = ∑1 U ∑2 U ∑3 U …
16
Languages
L is a said to be a language over alphabet ∑, only if L ∑*
this is because ∑* is the set of all strings (of all possible length including 0) over the given
alphabet ∑
Examples:
1. Let L be the language of all strings consisting of n 0’s followed by n 1’s:
L = {, 01, 0011, 000111,…}
2. Let L be the language of all strings of with equal number of 0’s and 1’s:
L = {, 01, 10, 0011, 1100, 0101, 1010, 1001,…}
18
Finite Automata : Examples
• On/Off switch action
state
19
Summary
• Automata theory & a historical perspective
• Chomsky hierarchy
• Finite automata
• Alphabets, strings/words/sentences, languages
20