  This article presents a visualization tool for designing and debugging
deterministic finite-state machines in FSM -- a domain specific language for
the automata theory classroom. Like other automata visualization tools, users
can edit machines and observe their execution, given some input. Unlike other
automata visualization tools, the user is not burdened nor distracted with
rendering a machine as a graph. Furthermore, emphasis is placed on the design
of machines and this article presents a novel design recipe for deterministic
finite-state machines. In support of the design process, the visualization tool
allows for each state to be associated with an invariant predicate. During
machine execution, the visualization tool indicates if the proposed invariant
holds or does not hold after each transition. In this manner, students can
validate and debug their machines before attempting to prove partial
correctness or submitting for grading. In addition, any machine edited with the
visualization tool can be rendered as executable code. The interface of the
visualization tool along with extended examples of its use are presented.
