Marmalade a more helpful programming environment
 

Marmalade

The goal of project Marmalade is to lower the barriers to successful programming by designing innovative programming environments, tools, and interaction techniques. We have already made significant progress with the design of the Whyline, reducing beginning programmers' debugging time by an average factor of 7.8 and helping them get 40% further through their tasks.

News

June 28th, 2004 — CNN has posted the Associated Press article on the Whyline! Check out the response on Slashdot.org. Most comments seemed to think the Whyline has something to do with "plain English," but of course, it doesn't.

May 14th, 2004 — PC Mag has a story on the EUSES consortium called "Debugging for the Masses", which talks about the Whyline.

May 7th, 2004 — Tom Chi of ok-cancel.com mentioned the Whyline in his CHI 2004 highlights. Thanks Tom!

May 6th, 2004 — NSF has posted a press release about the EUSES consortium, which includes a bit about the Whyline.

April 27th, 2004 — The Whyline was presented at CHI 2004 in Vienna, Austria. A video demonstration of the Whyline will be posted soon!

Overview of Marmalade

The goal of project marmalade is to design highly-integrated programming tools that help programmers prevent and resolve common programming errors. To support the design of these tools, we have developed a framework and methodology for studying of the causes of programming errors, as well as a design process aimed at optimizing the usability of programming tools through integration.

Our Studies and Findings

Our Tools

Recent Publications

Ko, A. J. (2004).
Designing a Flexible and Supportive Direct-Manipulation Programming Environment..
To appear at the IEEE Symposium on Visual Languages and Human-Centric Computing, Rome, Italy, September 26-29.

PDF
An important part of helping learners detect, repair and avoid software errors is providing semantic support for learners while they manipulate their code. Unfortunately, usability aspects of both textual and direct-manipulation environments limit their ability to provide such support. Preliminary findings from exploratory studies are discussed, and several design requirements for a more flexible and supportive programming environment are identified.
Ko, A. J., Myers, B. A., Aung, H. (2004).
Six Learning Barriers in End-User Programming Systems.
To appear at the IEEE Symposium on Visual Languages and Human-Centric Computing, Rome, Italy, September 26-29.

PDF
As programming skills increase in demand and utility, the learnability of end-user programming systems is of utmost importance. However, prior research on learning barriers in programming systems has primarily focused on languages, overlooking potential learning barriers in the environment and accompanying libraries. To address this, a study of beginning programmers learning Visual Basic.NET was performed. This identified six types of learning barriers: design, selection, coordination, use, understanding, and information. These barriers inspire a new metaphor of computation, which provides a more learner-centric view of programming system design.
Ko, A. J. and Myers, B. A.
A Framework and Methodology for Studying the Causes of Software Errors in Programming Systems.
To appear in the Journal of Visual Languages and Computing.

PDF
Programmers' work is often defined by the correctness, robustness, and flexibility of their code, rather than the efficiency with which they produce it. This makes current usability analysis techniques ill-suited to analyze programming systems, since their focus is more on problems with learnability and efficiency of use, and less on error-proneness. We propose a framework and empirical methodology that focuses specifically on describing the causes of software errors in terms of chains of cognitive breakdowns. The framework is derived from past classifications of software errors, psychological studies of software errors, and research on the mechanisms of human error. Our experiences using the framework to study errors in the Alice programming system suggests that our methodology can help highlight common causes of software errors, and provide important design knowledge for reducing programming error-proneness. We believe our contribution has important implications for programming system design, software engineering, the psychology of programming, and computer science education.
Myers, B. A., Pane, J. F. and Ko, A.
Natural Programming Languages and Environments.
To appear in Communications of the ACM.

PDF
Over the last six years, we have been working to create programming languages and environments that are or closer to the way people think about their tasks. The goal is to make it possible for people to express their ideas in the same way they think about them. To achieve this, we performed various studies about how people think about programming tasks, both when trying to create a new program and when trying to find and fix bugs in existing programs. We then used this knowledge to develop new tools for programming and debugging. Our user studies have shown that the resulting systems provide significant benefits to users.
Ko, A. J. and Myers, B. A. (2004).
Designing the Whyline: A Debugging Interface for Asking Questions About Program Failures
CHI 2004, Vienna, Austria, April 24-29, 151-158..

PDF
Debugging is still among the most common and costly of programming activities. One reason is that current debugging tools do not directly support the inquisitive nature of the activity. Interrogative Debugging is a new debugging paradigm in which programmers can ask why did and even why didn't questions directly about their s runtime failures. The Whyline is a prototype Interrogative Debugging interface for the Alice programming environment that visualizes answers in terms of runtime events directly relevant to a s question. Comparisons of identical debugging scenarios from user tests with and without the Whyline showed that the Whyline reduced debugging time by nearly a factor of 8, and helped programmers complete 40% more tasks.
Ko, A. J. and Myers, B. A. (2003).
Development and Evaluation of a Model of Programming Errors.
IEEE Symposia on Human-Centric Computing Languages and Environments, Auckland, New Zealand, October 28th-31st, 7-14.

PDF
This is the original conference version of our journal paper above. It briefly describes prior work on classifying errors, and proposes a new framework for studying the causes of software errors. For all of the details and an empirical methodology for studying the causes of software errors, see the journal paper.
Ko, A. J. (2003).
Preserving Non-Programmers Motivation with Error-Prevention and Debugging Support Tools.
IEEE Symposia Human-Centric Computing Languages and Environments, Auckland, New Zealand, October 28th-31st, 271-272.

PDF
This was an abstract written for the computer science education special event at Human-Centric Computing Languages and Environments 2003. It talks about our approaches to preserving motivation by breaking cycles of errors in learning to program.
Ko, A. J. (2003).
A Contextual Inquiry of Expert Programmers in an Event-Based Programming Environment.
CHI 2003 Extended Abstracts, Fort Lauderdale, FL, April 8th-10th, 1036-1037.

PDF
This is a student poster abstract of our initial studies of Alice, presented at CHI 2003. Here we briefly describe some early ideas for tools to prevent common software errors.

See All Publications

Why "Marmalade"?

When we started this project, we used the Alice 3D programming system to investigate and prototype our work.

Alice Programming Environment - Click to Magnify

The Alice 3D programming system, showing: (1) The object list, (2) the 3D world view, (3) the global event list, (4) the currently selected object's properties, methods, and questions, and (5) the currently selected method's code.

So, when naming our project, a reference to something in Lewis Carroll's "Alice's Adventures in Wonderland" seemed suitable. When Alice fell down the rabbit hole, she slowly passed by walls and walls of pictures, maps and cupboards:

She took down a jar from one of the shelves as she passed: it was labeled "ORANGE MARMALADE" but to her great disappointment it was empty: she did not like to drop the jar, for fear of killing somebody underneath, so managed to put it into one of the cupboards as she fell past it. (Lewis Carroll, Alice's Adventures in Wonderland, Chapter I)

This is Alice's first of many reasoning errors while in Wonderland: releasing the jar would not cause it to fall to the ground, because Alice is also falling; it would continue to fall right beside Alice until both plummeted to the ground.

Also, "Marmalade" conveniently stands for

Mechanisms that
Avert
Recurrent
Mistakes and
Assumptions by
Linking
Abstractions,
Data and
Events