A Plan-Based Intelligent Assistant That Supports the Process of Programming

WE DESCRIBE AN ARCHITECTURE FOR PROVIDING INTELLIGENT ASSISTANCE TO THE PROGRAMMER CARRYING OUT THE `PROCESS'' OF PROGRAMMING. THIS ARCHITECTURE, BASED ON AN AI `PLANNING'' PARADIGM, CAN PROVIDE BOTH PASSIVE AND ACTIVE ASSISTANCE. PASSIVE ASSISTANCE, ACCOMPLISHED BY `PLAN RECOGNITION'', IS USED TO AUTOMATE THE PROGRAMMING PROCESS. A KEY ISSUE IN ACHIEVING APPRO- PRIATE LEVELS OF ASSISTANCE IS THE ABILITY TO CAPTURE COMPLEX DOMAIN KNOW- LEDGE IN A PLANNING FORMALISM. WE ILLUSTRATE TWO LIMITATIONS IN TRADITION- AL HIERARCHICAL FORMALISMS, AND PRESENT SOLUTIONS BASED ON THE USE OF `META-PLANS'' AND `NON-MONOTONIC REASONING''.