This document summarizes a lecture on finite state machines (FSMs) and provides an example of designing an FSM-based traffic light controller. It begins by introducing the topics of factoring FSMs and output encoding. It then presents the traffic light controller example, showing how it can be designed as two communicating FSMs - one for the traffic lights and one for a timer. It provides state diagrams and Verilog code for the FSMs and discusses how they interact. The document concludes by summarizing general FSM design procedures.