Developer Tools

AlgoTouch lets you build programs by executing data transformations

No coding needed: just manipulate data and AlgoTouch generates Python, C++, Java code.

Deep Dive

AlgoTouch, developed by a team from Université Bretagne Sud (UBS Vannes) and IRISA, presents a radical departure from traditional text-based programming. The system allows users to construct imperative programs by directly manipulating program data—executing transformations that are recorded and incorporated into an internal intermediate representation. Rather than assembling syntactic structures, developers work through concrete execution, with an explicit 'notional machine' exposing data storage, computation, and control flow. This enables continuous alignment between observed execution behavior and program structure. A key contribution is deterministic synthesis of control structures: conditionals are derived from observed comparisons, and iterative behaviors are encapsulated into loop macros that support non-linear, incremental construction. The design permits partial and incomplete programs to be executed, refined, and completed while preserving semantic consistency. AlgoTouch automatically generates correct, readable programs in several mainstream imperative languages, including Python, C, C++, and Java. The system was validated through engineering-level evaluations on a representative set of algorithmic benchmarks, demonstrating correctness, expressiveness, robustness, and language independence. By integrating execution, construction, and code generation into a unified architecture, AlgoTouch introduces an alternative model for interactive program construction—a new class of execution-centered development systems that could lower the barrier for novices and streamline prototyping for experts.

Key Points
  • Programs are built by executing concrete data transformations, not writing textual code.
  • AlgoTouch automatically synthesizes conditionals and loops from observed execution behavior.
  • Generates readable, correct code in Python, C, C++, and Java, supporting partial program refinement.

Why It Matters

This paradigm shift could make programming more accessible and accelerate iterative development through direct data manipulation.