Table of Contents

Many software products are used by people with a wide variety of demands and useage patterns. Off-the-shelf software cannot be optimal for everyone, so it is usually configured for a hypothetical typical user. With varied users or changing patterns, this may in fact diminish most users' productivity and quality of work.

We propose a novel form of software adaptation through learning: agent-based extensions dynamically adapting the software environment in response to a user's actions and circumstances. A "learning apprentice" learns how to carry out a particular task by observing user interaction with the software. The apprentice can then suggest the action in similar circumstances. Because it learns, the system adjusts to changes in the user's behavior or situation. Machine learning techniques will help automate this task to keep its cost low.

  1. Project Overview
  2. Performance Tasks
  3. Objectives
    1. How to optimize the utility of the apprentice
      1. Suggestion Quality
      2. User Interaction
      3. Coping with Context Shift
      4. Feature Engineering
      5. Real-time Learning
    2. How to retrofit a learning apprentice to existing software
    3. The learning apprentice must maintain a sort of user model
  4. Related Work
  5. Methodology
    1. The Tradeoff between Coverage and Accuracy
    2. Context shift
    3. Feature/bias engineering
  6. Role of Research Personnel
  7. References