This document provides an introduction to classic model checking. It discusses that classic model checking refers to set of non-execution based algorithmic approaches for checking properties expressed as linear temporal logic, computational tree logic, or finite state automata against a finite state model. It outlines some of the key concepts of classic model checking including modeling the system as a finite state machine or Kripke structure, specifying properties in temporal logic, and using algorithms to automatically verify the system exhaustively. The document also discusses some of the challenges of classic model checking including state explosion, difficulty in modeling complex systems, and interpreting error traces.