An Introduction to Formal Languages and Automata (Linz, 2017)
Chapter 1: Intro to Theory of Computation
Chapter 3: Regular Expressions and Regular Languages
Chapter 4: Properties of Regular Languages
Chapter 5: Context-Free Languages
Chapter 6: Simplification of Context-Free Grammars and Normal Forms