Christopher Scaffidi


Want to change the world? Think about working in the area of end-user programming.

By 2012, over 90 million people will use computers in American workplaces, including at least 55 million who will create spreadsheets, databases, scripts, or other programs to automate tasks that would be tedious or error-prone to do manually. For example, an end-user programmer might create a script that computes the monthly interest due on a loan. End-user programming enables a user to extend the capabilities of the computer, adapting the computer to the user's needs.

However, end-user programmers run into trouble when trying to automate larger tasks. In particular, combining several programs into a larger program is often impossible or requires intricate, brittle code. For instance, existing programming tools offer no easy way to use borrower names in a spreadsheet to look up corresponding loan information from an existing database provided by a co-worker, to compute each borrower's monthly interest payments by repurposing the script mentioned above, and to display the results beside each borrower name in the spreadsheet.

My goal over the next few years is to enable end-user programmers to more effectively create, share and combine code. Two key stumbling blocks stand in the way. First, end-user programmers need a reliable way of finding existing code that they can adapt and combine. I plan to extend a preliminary model for identifying reusable code, then use this model to provide methods and systems for guiding end-user programmers to locate high-quality code. Second, after identifying useful existing code, end-user programmers need a reliable way to integrate code. I will focus first on helping programmers pass data from one piece of code to another. As an initial step, I developed a data model and supporting tools in my thesis work so that end users can create code for validating and reformatting the many string-like data values in end-user programs. These strings are modeled with abstractions called "topes" that are platform-independent and which might ultimately serve as a "lingua franca" for exchanging data between scripts, spreadsheets and other kinds of code.

Want to put more power in the hands of end users? Then please email me to talk about collaborating. I am also planning to hire new graduate students in Fall 2009 and 2010 -- to be considered, apply to EECS and mention end-user programming and my name; if you're already a student, email me to set up a meeting.



Web page copyright (C) 2004-2010 Christopher Scaffidi, All Rights Reserved. All software is copyrighted and is distributed under a BSD-like license. This material is based upon work supported by the National Science Foundation. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.