6. Syllabus
UNIT – I
Finite Automata & Regular Languages - Languages vs. Problems. Finite State Automata, Regular Languages.
Closure properties, Limitations, Pumping Lemma, Myhill-Nerode relations, Quotient Construction.
Minimization Algorithm.
UNIT – II
Non-determinism & Regular Expressions - Notion of non-determinism. Acceptance condition. Subset
construction. Pattern matching and regular expressions. Regular Expressions and Regular languages. More
closure properties of regular languages.
UNIT – III
Grammars & Context-free Languages (CFLs) - Grammars and Chomsky Hierarchy, CFLs, Regular
Grammars, Chomsky Normal Form, Pumping Lemma for CFLs, Inherent Ambiguity of Context-Free
Languages, Cock-Younger-Kasami Algorithm, Applications to Parsing. Pushdown Automata (PDA), PDA vs.
CFLs. Deterministic CFLs.
UNIT – IV
Turing Machines & Computability - Introduction to Turing Machines, Configurations, Halting Vs. Looping.
Multi-tape Turing machines. Recursive and Recursively enumerable languages. Undecidability of Halting
Problem. Reductions. Introduction to Theory of NP-completeness.
7. Course Objectives
1. Introduce the student to the concepts of Theory of computation in computer science.
2. The students should acquire insights into the relationship among formal languages, formal grammars,
and automata.
3. Know the concepts of tractability and decidability, the concepts of NP-completeness and NP-hard problem.
4. Understand the challenges for Theoretical Computer Science and its contribution to other sciences.
8. Course Outcomes
Students who complete the course will have demonstrated the ability to do the following:
• C316.1 Differentiate various machines to recognize languages. (Comprehension)
• C316.2 Analyze finite state machines to solve problems in computing. (Analysis)
• C316.3 Explain Automata Theory as the basis of all computer science languages design. (Knowledge)
• C316.4 Solve problems using formal language. (Synthesis)
• C316.5 Apply computational theory. (Application)
9. PROGRAM OUTCOMES
1. ENGINEERING KNOWLEDGE: Apply the knowledge of mathematics, science, engineering fundamentals, and an
engineering specialization to the solution of complex engineering problems.
2. PROBLEM ANALYSIS: Identify, formulate, research literature, and analyze complex engineering problems reaching
substantiated conclusions using first principles of mathematics, natural sciences, and engineering sciences.
3. DESIGN/DEVELOPMENT OF SOLUTIONS: Design solutions for complex engineering problems and design
system components or processes that meet the specified needs with appropriate consideration for the public health and
safety, and the cultural, societal, and environmental considerations.
4. CONDUCT INVESTIGATIONS OF COMPLEX PROBLEMS: Use research-based knowledge and research
methods including design of experiments, analysis and interpretation of data, and synthesis of the information to provide
valid conclusions.
5. MODERN TOOL USAGE: Create, select, and apply appropriate techniques, resources, and modern engineering and
IT tools including prediction and modeling to complex engineering activities with an understanding of the limitations.
6. THE ENGINEER AND SOCIETY: Apply reasoning informed by the contextual knowledge to assess societal,
health, safety, legal and cultural issues and the consequent responsibilities relevant to the professional engineering
practice.
10. PROGRAM OUTCOMES Cont…
7. ENVIRONMENT AND SUSTAINABILITY: Understand the impact of the professional engineering solutions in
societal and environmental contexts, and demonstrate the knowledge of, and need for sustainable development.
8. ETHICS: Apply ethical principles and commit to professional ethics and responsibilities and norms of the engineering
practice.
9. INDIVIDUAL AND TEAM WORK: Function effectively as an individual, and as a member or leader in diverse
teams, and in multidisciplinary settings.
10. COMMUNICATION: Communicate effectively on complex engineering activities with the engineering community
and with society at large, such as, being able to comprehend and write effective reports and design documentation, make
effective presentations, give and receive clear instructions.
11. PROJECT MANAGEMENT AND FINANCE: Demonstrate knowledge and understanding of the engineering and
management principles and apply these to one’s own work, as a member and leader in a team, to manage projects and in
multidisciplinary environments.
12. LIFE-LONG LEARNING: Recognize the need for, and have the preparation and ability to engage in independent
and life-long learning in the broadest context of technological change.
11.
12. Language
• Language is a collection of appropriate strings
• Language is defined as a “set of strings of symbols over an alphabet”.
• The method of human communication, either spoken or written, consisting of the use of words in a
structured and conventional way.
• A system of communication used by a particular country or community.
14. Programming Languages
• A program is a set of instructions that tells a computer what to do in order to come up with a solution to a
particular problem. Programs are written using a programming language. A programming language is a
formal language designed to communicate instructions to a computer. There are two major types of
programming languages: low-level languages and high-level languages.
• There are three main kinds of programming language:
1. Machine language
2. Assembly language
3. High-level language (Python, Visual basic, Java)
15. Top 10 Programming languages and their
inventors
• C – Dennis Ritchie
• C++ – Bjarne Stroustrup
• Java- James Gosling
• Python – Guido van Rossum
• PHP – Rasmus Lerdorf
• Perl – Larry Wall
• JavaScript – Brendan Eich
• Ruby – Yukihiro Matsumoto
• Lisp – John McCarthy
• Pascal – Niklaus Wirth
17. Machine
• A machine is defined as a system where information is transmitted and used for performing some functions
without direct participation of man.
• A machine is anything that reduces human effort.
• Anything that simplifies work or saves time is a machine
• A device which gain some energy and convert into desired useful work is called machine.
19. Computation
• The action of mathematical calculation.
• computation means mathematical calculations. In the context of computer science, an automaton is a
machine that can perform the computation in a mechanized manner.
• Computation is any type of calculation that includes both arithmetical and non- arithmetical steps and
follows a well defined model.