-Accelerated by the Do-It-Yourself mindset of the Web 2.0 culture, end-user programming, which is programming by end users with limited, if any, 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 drag-and-drop style of programming making 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 Future Trace, a system to make programming more conversational. A conversational programming agent runs programs one step into the future in order to visualize discrepancies between the programs users intended to write and the actual programs.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, which is limited in nature to programs that are malformed. Miss one semicolon in a C program and the program may no longer work at all. A programmer may spend considerable amount of effort to write a program before the programming environment provides meaningful feedback.One idea to simplify programming would be to make the communication process between the programmer and the programming environment more symmetrical with the goal to aid 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 and natural programming 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. A different approach is the notion of conversational programming employing computational agents to provide real-time semantic feedback to a programmer so that the programmer can indentify discrepancies between the intended program and the actual program.Conversational programming could be conceptualized as a simple form of pair programming substituting a human partner with a computational agent called the Conversational Programming Agent (CPA). Figure 1 describes a conversational programming architecture.The notion of a conversation suggest the need for a:• programming partner/agent capable to serve as that other pair of eyes.• more symmetrical and sema...