Results 1 -
4 of
4
Sheepdog: Learning Procedures for Technical Support
- IN PROCEEDINGS OF IUI 2004
, 2004
"... Technical support procedures are typically very complex. Users often have trouble following printed instructions describing how to perform these procedures, and these instructions are difficult for support personnel to author clearly. Our goal is to learn these procedures by demonstration, watching ..."
Abstract
-
Cited by 19 (4 self)
- Add to MetaCart
Technical support procedures are typically very complex. Users often have trouble following printed instructions describing how to perform these procedures, and these instructions are difficult for support personnel to author clearly. Our goal is to learn these procedures by demonstration, watching multiple experts performing the same procedure across different operating conditions, and produce an executable procedure that runs interactively on the user's desktop. Most previous programming by demonstration systems have focused on simple programs with regular structure, such as loops with fixed-length bodies. In contrast, our system induces complex procedure structure by aligning multiple execution traces covering different paths through the procedure. This paper presents a solution to this alignment problem using Input/Output Hidden Markov Models. We describe the results of a user study that examines how users follow printed directions. We present Sheepdog, an implemented system for capturing, learning, and playing back technical support procedures on the Windows desktop. Finally, we empirically evalute our system using traces gathered from the user study and show that we are able to achieve 73% accuracy on a network configuration task using a procedure trained by non-experts.
Programming by Demonstration: a Machine Learning Approach
, 2001
"... Programming by demonstration (PBD) enables users to construct programs to automate repetitive tasks without writing a line of code. The key idea in PBD is to generalize from the user's demonstration of the program on a concrete example to a robust program that will work in new situations. Previous a ..."
Abstract
-
Cited by 15 (0 self)
- Add to MetaCart
Programming by demonstration (PBD) enables users to construct programs to automate repetitive tasks without writing a line of code. The key idea in PBD is to generalize from the user's demonstration of the program on a concrete example to a robust program that will work in new situations. Previous approaches to PBD have employed heuristic, domain-specific algorithms to generalize from a small number of examples. In this thesis, we formalize programming by demonstration as a machine learning problem: given the changes in the application state that result from the user's demonstrated actions, learn the sequence of instructions that map from one application state to the next. We propose a domain-independent machine learning approach to PBD that is capable of learning useful programs from a small number of examples. This approach addresses two difficult questions: (1) How do we construct the search space of possible program statements? (2) How do we search this large space efficiently? Our solution is based on the concept of version space algebra. Mitchell [55] formalized concept learning as a search through a version space of hypotheses consistent with the examples. Concept learning may be thought of as learning functions that map from an instance to a binary classification. In this work, we extend version spaces to apply to complex functions: functions that map from one complex object to another. We then present version space algebra, a means for combining several small spaces in order to construct complex version s...
Assessing test data adequacy through program inference
- ACM Transactions on Programming Languages and Systems
, 1983
"... Despite the almost universal reliance on testing as the means of locating software errors and its long history of use, few criteria have been proposed for deciding when software has been thoroughly tested. As a basis for the development of usable notions of test data adequacy, an abstract definition ..."
Abstract
-
Cited by 10 (0 self)
- Add to MetaCart
Despite the almost universal reliance on testing as the means of locating software errors and its long history of use, few criteria have been proposed for deciding when software has been thoroughly tested. As a basis for the development of usable notions of test data adequacy, an abstract definition is proposed and examined, and approximations to this definition are considered.
A Closer Look at Programming Expertise: Critical Survey of Some Methodological Issues
, 1996
"... ion It is well known that abstract programming concepts help the programmer deal with the complexity of the task. Program design is essentially formulating a problem solution first as an abstract algorithm and then transforming the latter into a concrete program. Roughly speaking, the difference b ..."
Abstract
-
Cited by 8 (3 self)
- Add to MetaCart
ion It is well known that abstract programming concepts help the programmer deal with the complexity of the task. Program design is essentially formulating a problem solution first as an abstract algorithm and then transforming the latter into a concrete program. Roughly speaking, the difference between abstract and concrete concepts is determined by the programming language. Programming language constructs express concrete concepts. Abstract concepts must be implemented in terms of concrete concepts. Frequently, this is accomplished in several steps, so abstract concepts are implemented in terms of less abstract (i.e., more concrete) ones, which are in turn implemented in terms of even less abstract concepts etc. As an example, let us consider the known computational abstraction filtering. It is a control structure, the semantics of which can be expressed as follows: Filtering a collection means to construct a collection containing the original collection elements that satisfy a g...

