This document discusses automata based programming, which uses finite state machines (FSMs) to model program behavior. The approach was developed in 1991 as an alternative to traditional imperative programming. Programs are described as automata, which are then converted to code. Advantages include representing logic visually instead of textually, making fixes simpler. Thinking in automata is necessary for event-driven programming. An example traffic light system is modeled with states like red, green, yellow. The FSM acts as the controller, with transitions between states, while the controlled object changes its output based on the current state.