Table of Contents
Fetching ...

Design of a visual environment for programming by direct data manipulation

Michel Adam, Patrice Frison, Moncef Daoud, Sabine Letellier Zarshenas

TL;DR

The paper addresses making programming more accessible by enabling Turing-complete code to be built entirely through direct manipulation of data in a visual environment. It presents AlgoTouch, a Von Neumann-inspired notional machine and AGT-based language, where users manipulate variables, arrays, and indices to generate code across AGT, Python, C, C++, and Java, including loops and conditionals via a non-linear macro framework. Key contributions include a detailed memory-model, a comprehensive visual interface, data-aware construction of Loop Macros, and a bimodal workflow that balances direct data manipulation with textual editing, plus extensive educational evaluation. The approach aims to improve learnability, offer immediate feedback, and support flexible, modular program development with broad pedagogical implications for introductory programming education.

Abstract

The use of applications on computers, smartphones, and tablets has been considerably simplied thanks to interactive and dynamic graphical interfaces coupled with the mouse and touch screens. It is no longer necessary to be a computer specialist to use them. Paradoxically, the development of computer programs generally requires writing lines of code in a programming language whose syntax is particularly strict. This process poses many diculties for programmers. We propose an original tool in which arbitrary programs (Turing-complete) can be developed in a completely visual manner by direct manipulation of the data, without writing a line of code. The user can thus develop an algorithm by directly visualizing the result of actions taken on the data. A method for constructing iterations is associated with the tool. It proposes to create each part, including the loop body, in a non-linear manner under visual control of the state of the data. In addition, the tool supports the production of code that corresponds to the actions performed, where the language can be Python, C, or Java. In this article, we present the tool, the design choices, the problems solved, and the limits and contributions of the direct-data-manipulation approach.

Design of a visual environment for programming by direct data manipulation

TL;DR

The paper addresses making programming more accessible by enabling Turing-complete code to be built entirely through direct manipulation of data in a visual environment. It presents AlgoTouch, a Von Neumann-inspired notional machine and AGT-based language, where users manipulate variables, arrays, and indices to generate code across AGT, Python, C, C++, and Java, including loops and conditionals via a non-linear macro framework. Key contributions include a detailed memory-model, a comprehensive visual interface, data-aware construction of Loop Macros, and a bimodal workflow that balances direct data manipulation with textual editing, plus extensive educational evaluation. The approach aims to improve learnability, offer immediate feedback, and support flexible, modular program development with broad pedagogical implications for introductory programming education.

Abstract

The use of applications on computers, smartphones, and tablets has been considerably simplied thanks to interactive and dynamic graphical interfaces coupled with the mouse and touch screens. It is no longer necessary to be a computer specialist to use them. Paradoxically, the development of computer programs generally requires writing lines of code in a programming language whose syntax is particularly strict. This process poses many diculties for programmers. We propose an original tool in which arbitrary programs (Turing-complete) can be developed in a completely visual manner by direct manipulation of the data, without writing a line of code. The user can thus develop an algorithm by directly visualizing the result of actions taken on the data. A method for constructing iterations is associated with the tool. It proposes to create each part, including the loop body, in a non-linear manner under visual control of the state of the data. In addition, the tool supports the production of code that corresponds to the actions performed, where the language can be Python, C, or Java. In this article, we present the tool, the design choices, the problems solved, and the limits and contributions of the direct-data-manipulation approach.

Paper Structure

This paper contains 67 sections, 29 figures, 1 table.

Figures (29)

  • Figure 1: The AlgoTouch interface showing a program under construction, called FindMin, for searching an array. It displays the smallest value and its position. The Workspace, in the center, presents an array a of 10 elements indexed by the variable i, and two variables pos and min. The AGT program is shown on the right, and the Python version is available at the bottom.
  • Figure 2: An integer variable q initialized to 0, and a character variable c initialized to '?'.
  • Figure 3: An integer constant MAX of value 20, and a character constant YES of value 'y'.
  • Figure 4: Representation of an array a of 10 integers, and the associated constant, a.length, representing its length. Each cell in the array can be manipulated like any variable.
  • Figure 5: Array a of 10 elements with two indexes, i and j. Index i is 3 and designates the value 58 in the array. Because index j, which is 12, is outside the array the index does not designate any cell of the array, and it is forbidden to use a[j]. The button in the top right corner containing a green arrow is used to quickly define an index for the array a.
  • ...and 24 more figures