A Systematic Approach to Programming
Maurice Chandoo

TL;DR
This paper presents a systematic method for implementing algorithms in programming languages by deriving programs directly from execution traces, simplifying the development process and reducing cognitive load.
Contribution
It introduces a novel approach that constructs programs from execution traces and test cases, differing from traditional test-driven development.
Findings
Method successfully applied to two examples
Reduces complexity in program construction
Provides a formal framework for comparison
Abstract
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.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsMachine Learning and Algorithms · Logic, programming, and type systems · Software Testing and Debugging Techniques
