Models of finite automata, and various extensions of the basic idea.
Representations of various versions of finite automata in Scala.