-Accelerated by the Do-It-Yourself mindset of the Web 2.0 culture, end-user programming-programming by end users with limited or even no formal programming background-is growing rapidly. Especially in educational settings, children are exposed to computational thinking by making games, building scientific simulations and creating stories. Early educational programming languages such as Logo have made programming substantially more accessible to end-users. More recent approaches include visual programming with a drag-and-drop style of programming that makes it nearly impossible to compose syntactically incorrect programs. However, as the syntactic challenges of end-user programming are gradually fading into the past, the new frontier of semantic programming support emerges. This demonstration introduces Conversational Programming, a system to make programming more conversational. A conversational programming agent runs programs one step into the future in order to help end-users visualize discrepancies between the programs they intended to write and their actual programming results.Keywords -Game design; computational thinking; debugging; end-user programming; visual programming.
I. TOWARDS CONVERSATIONAL PROGRAMMINGIn programming, the interaction between the programmer and the programming environment is typically asymmetrical and often limited to syntactic feedback regarding programs that are malformed. Miss one semicolon in a C program and the program may no longer work at all. A programmer may spend a considerable amount of effort on writing a program before the programming environment provides meaningful feedback.One way to simplify programming would be to make the communication process between the programmer and the programming environment more symmetrical with the goal of aiding debugging. But just how can one conceptualize debugging? Pea [1] describes the process of debugging as:
systematic efforts to eliminate discrepancies between the intended outcomes of a program and those brought through the current version of the program.A number of programming approaches, including programming by example [2, 3] and natural programming [4], try to systematically reduce these discrepancies by having programmers demonstrate actions on concrete examples or by providing programming languages that more closely resemble the way users with no programming background tend to think about certain problems. The notion of conversational programming, introduced in this paper, provides a different approach that employs computational agents to provide real-time semantic feedback to a programmer so that the programmer can identify discrepancies between the intended program and the actual program. The only way to provide this kind of semantic feedback is for the computer to actually execute parts of the program as written by the user. While this translates into additional computational needs for programming environments, we find that modern multi core computers have no problem handling this extra effort. More importantly, com...