  We show how to systematically implement an algorithm in any imperative or
functional programming language. The method is based on the premise that it is
easy to write down how an algorithm proceeds on a concrete input. This
information---which we call execution trace---is used as a starting point to
derive the desired program. In contrast to test-driven development the program
is directly constructed from the test cases instead of written separately. The
program's operations, control flow and predicates guiding the control flow are
worked out separately, which saves the programmer from having to think about
them simultaneously. We demonstrate the method for two examples and discuss its
utility. Additionally, we provide a formal framework to compare it with other
approaches.
