In order to prepare for the midterm you should know the following concepts and have perfected the skills below.

Formal definitions and definitions of acceptance for each of the following Regular Language systems.

- DFA
- NFA
- epsilon-NFA
- Regular expression
- Generalized NFA

Notions of Closure of Regular Languages. Define and produce constructions (in at least one Regular Language system) for each closure operation.

- Union
- Concatenation
- Intersection
- Kleene star
- Reverse
- Complement

Notions of equivalence. Be able to argue why all of the Regular language systems are equivalent. Be able to reproduce and use the constructions of the following.

- NFA => DFA. Subset construction
- RE => NFA. By analysis of the structure of the RE
- GNFA => RE By state ripping

Some languages are not regular. Be able to state and use the RE pumping lemma to show that a particular language is not regular.

Formal definitions and definitions of acceptance for each of the following Context Free systems.

- CFG
- PDA

Notions of equivalence. Be able to argue why both context free grammars and push down automata describe the same set of languages. Be able to reproduce and use the constructions of the following.

- CFG => PDA
- PDA => CFG

Design of languages. You should be able to design elements of each of the formal systems that regconize languages given by mathematical or informal english descriptions.

- DFA
- NFA
- epsilon-NFA
- Regular expression
- Generalized NFA
- CFG
- PDA