Rants
Questions
Soapbox
Best Practices
Tue, May 29, 2007 13:19 EDT

|
Posted by: Fred Hapgood in Best Practices Topic: ApplicationsBlog: CIO Research Update
Current Rating: |
You know that curvy red line that some programs (like Word) draw under the words it thinks you have misspelled?
Imagine how cool it would be to have
a similar sort of error-checking for all the other areas of our life. Every time we got a name wrong, or forgot a birthday, or gave a chafing dish to a couple that never cooks, a wavy line would pop up in our field of vision, warning us that we just fumbled the ball.
One sphere of life that needs error-checking in the worst way is spreadsheets. It is very easy to make mistakes in spreadsheets since almost any value (in theory) can be entered into almost any cell, and almost any formula (again, in theory) could be associated with that or any other cell. The structure of a spreadsheet looks much the same everywhere. Thus it is very hard to pick out implausible entries at a glance.
The result is that spreadsheets are rife with errors. Indeed, some experts have claimed never to have seen a moderately complex spreadsheet without one or more, often many more, errors in it.
Given how important spreadsheets are to society this is obviously a situation crying out for redress. But computers are even worse at perceiving deviations from patterns than humans are. With all these degrees of freedom, how do you begin teaching an error checker the difference between right and wrong?
Recently a group of computer scientists at Oregon State University found an ingenious and possibly quite generalizable approach to the problem. While the program (called GoalDebug; for "Goal Directed Debugging of Spreadsheets") cannot pick up raw errors -- we still have to rely on humans to do that -- it optimizes correction of those errors.
GoalDebug is what is called an inference system -- in this case you flag an entry as an error and it infers how the error was made and therefore what the right value probably is.
More specifically, suppose you spot an entry in a spreadsheet you think looks weird. You feed the entry to GoalDebug and enter the kind of value you would have expected to see. The program then lists the kinds of human errors that would have yielded this particular mistake (not the corrections, the categories of errors).
You pick the