This document provides an overview of context-free grammars and pushdown automata. It begins with definitions and examples of context-free grammars, including their components, derivations, parse trees, ambiguity, and applications. It then covers pushdown automata, defining them as finite state machines with a stack. It discusses the two types of acceptability in PDAs - final state and empty stack acceptability. Examples of languages recognized by PDAs are provided. The document concludes with how to convert between context-free grammars and pushdown automata, including examples of converting a CFG to a PDA and vice versa. It also briefly discusses deterministic pushdown automata.