Faculty of Computer Science

Bachelor in Applied Computer Science

**[M1]** *Introduction to Automata Theory, Languages,
and Computation (3rd edition).* J.E. Hopcroft, R. Motwani,
J.D. Ullman. Addison Wesley, 2007.

**[M2]** *Lecture Notes for
Formal Languages*. Diego Calvanese. 2007. Available as scanned
pages in pdf.

**[M3]**
*Exercises on Formal
Languages*. Available as scanned pages in pdf.

**Topics**[M2: Part 1]- course presentation
- basic definitions about relations

**What you should know after the lecture**- the basic notions about relations

**Topics**[M2: Part 1]- basic definitions about functions
- basic definitions about languages

**What you should know after the lecture**- the basic notions about relations and functions, and their properties
- the formal meaning of alphabet, string, language

**Topics**[M2: Part 2]- finite state machines
- deterministic finite automata (DFA)
- extended transition function for a DFA

**What you should know after the lecture**- how a finite-state machine works (informally)
- the formal definitions of a DFA and of an NFA, and of the language they accept
- construct a DFA for a given language

**Topics**[M2: Part 2]- nondeterministic finite automata (NFA)
- different views of nondeterminism
- relationship between DFAs and NFAs (subset construction)

**What you should know after the lecture**- construct an NFA for a given language
- how to prove that DFAs and NFAs accept the same class of languages
- how to contstruct a DFA from a given NFA

**Exercises**on deterministic and nondeterministic finite automata [M3: Exercise 1,2]

**Topics**[M2: Part 2]- finite automata with epsilon-transitions
- eliminating epsilon-transitions

**What you should know after the lecture**- how to prove that epsilon-NFAs and NFAs accept the same class of languages
- how to construct an NFA from a given epsilon-NFA

**Exercises**on finite automata with epsilon transitions and on regular languages [M3: Exercise 3]

**Topics**[M2: Part 3]- regular expressions
- algebraic laws for regular expressions

**What you should know after the lecture**- what the language generated by a regular expression is
- what algebraic laws hold for regular expressions

**Exercises**on finite automata and regular expressions [M3: Exercise 4]

**Topics**[M2: Part 3]- converting a regular expression to a finite automaton
- converting a finite automaton to a regular expression

**What you should know after the lecture**- how to prove that finite automata accept exactly the regular languages
- how to construct a finite automaton from a given R.E.
- how to construct a R.E. from a given automaton

**Exercises**on finite automata and regular expressions [M3: Exercise 5]

**Topics**[M2: Part 4]- closure properties of regular expressions
- pumping lemma for regular languages
- proving languages not to be regular

**What you should know after the lecture**- that regular languages are closed under regular and boolean operations
- how to prove that a languages is not regular
- what properties can be decided about regular languages

**Topics**[M2: Part 4]- decision problems for regular languages
- minimization of finite automata

**What you should know after the lecture**- what properties about regular languages can be decided, and what is the computational cost
- how to minimize a finite automaton

**Exercises**on properties of regular languages and pumping lemma [M3: Exercise 6]

**Topics**[M2: Part 5]- Chomsky formal grammars
- derivation

**What you should know after the lecture**- what a Chomsky formal grammar is
- how the language generated by a formal grammar is defined

**Exercises**on minimization of finite automata [M3: Exercise 7,8]

**Topics**[M2: Part 5]- classification of formal grammars
- grammars of type 0, type 1 (or context-sensitive), type 2 (or context-free), type 3 (or regular)
- context free grammars
- parse-trees for context-free grammars

**What you should know after the lecture**- how formal grammars are classified
- recognize what the type of a grammar is
- how context-free grammars are defined
- how to construct the parse-tree corresponding to a derivation

**Exercises**on classification of grammars [M3: Exercise 9,10]

**Topics**[M2: Part 5]- simplifying context free grammars (eliminating useless symbols, eliminating epsilon-transitions, eliminating unit-productions)
- Chomsky normal form for a CFG

**What you should know after the lecture**- how to eliminate useless symbols from a CFG
- how to eliminate epsilon-productions from a CFG
- how to eliminate unit-productions from a CFG
- how to convert a CFG into Chomsky normal form

**Exercises**on context-free grammars and normal forms for grammars [M3: Exercise 11,12]