_____________________________________________________________________________________
UNIT 1. Introduction to the Theory of Automata and Formal Languages
1.1. Why study Automata Theory. History and origins
1.2. Relationship with others areas of knowledge
1.3. Machines, Languages and Algorithms
UNIT 2. Automata Theory
2.1. Introduction and Definitions
2.2. Mathematical model of an automaton
2.3. Automata and algorithms
2.4. Discrete, continuous, and hybrid automata. Classes of automata
2.5. Formal Languages: Introduction and Definitions
2.6. Operations with words. Operations with languages
UNIT 3. Finite Automata
3.1. Definition and Representation of Deterministic Finite Automata (DFA)
3.2. DFA as recognition devices
3.3. Equivalence and minimization of DFAs
3.4. Theorems of DFAs
3.5. Definition and Representation of Nondeterministic Finite Automata (NFA)
3.6. The Language of a NFA
3.7. Equivalence of DFAs and NFAs
UNIT 4. Languages and Formal Grammars
4.1. Operations with languages. Derivations
4.2. Concept of grammar. Formal grammar
4.3. Chomsky Hierarchy and equivalent grammars
4.4. Context-free grammars
4.5. Language of a context-free grammar. Parse Trees
4.6. Well-formed grammars
4.7. Chomsky Normal Form. Greibach Normal Form
UNIT 5. Regular Languages
5.1. Definition of regular languages
5.2. DFA for a regular grammar
5.3. Equivalence of regular expressions
5.4. Kleene's Theorem
5.5. Characteristic equations
5.6. Synthesis Problem: Recursive algorithm
5.7. Derivatives of regular expressions
UNIT 6. Pushdown Automata
6.1. Definition of Pushdown Automata (PDA)
6.2. Transitions, Movement and Instantaneous Description in PDA
6.3. Acceptance by Empty Stack. Acceptance by Final State
6.4. Language Accepted by a PDA
6.5. Equivalence of PDA by Empty Stack and PDA by Final State
6.6. From Context-Free Grammar to Push-Down Automata
6.7. From Pushdown Automata to Context-Free Grammar
UNIT 7. Turing Machine
7.1. Definition of a Turing Machine
7.2. Variations of Turing Machines
7.3. Universal Turing Machine
UNIT 8. Computational Complexity
8.1. Complexity Theory
8.2. Complexity of algorithms
8.3. P versus NP problems
8.4. Defining complexity classes
8.5. Time complexity
8.6. Hierarchy theorems
8.7. Non-computational problems
8.8. Limits of Computability