Towards a Programmer's Apprentice (Again)

Programmers are loathe to interrupt their workflow to document their design rationale, leading to frequent errors when software is modified—often much later and by different programmers. A Programmer's Assistant could interact with the programmer to capture and preserve design rationale, in a natural way that would make rationale capture "cost less than it's worth", and could also detect common flaws in program design. Such a programmer's assistant was not practical when it was first proposed decades ago, but advances over the years make now the time to revisit the concept, as our prototype shows.

[1]  Spencer Rugaber,et al.  On the knowledge required to understand a program , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[2]  Richard C. Waters,et al.  The programmer's apprentice , 1990, ACM Press frontier series.

[3]  Thomas F. Stahovich,et al.  Generating Multiple New Designs from a Sketch , 1996, Artif. Intell..

[4]  Howard E Shrobe,et al.  Dependency Directed Reasoning for Complex Program Understanding , 1979 .

[5]  Linda M. Wills,et al.  Recognizing a program's design: a graph-parsing approach , 1990, IEEE Software.

[6]  Richard C. Waters,et al.  Automatic transformation of series expressions into loops , 1991, TOPL.

[7]  Richard C. Waters,et al.  A Method for Analyzing Loop Programs , 1979, IEEE Transactions on Software Engineering.

[8]  Charles Rich Inspection Methods in Programming: Cliches and Plans , 1987 .

[9]  Christine J. Alvarado,et al.  A natural sketching environment : bringing the computer into early stages of mechanical design , 2000 .

[10]  Christine Alvarado,et al.  A Framework for Multi-Domain Sketch Recognition , 2002 .

[11]  Boris Katz,et al.  Harnessing Language in Mobile Environments , 2007, International Conference on Semantic Computing (ICSC 2007).

[12]  Randall Davis,et al.  Tahuti: a geometrical sketch recognition system for UML class diagrams , 2006, SIGGRAPH Courses.

[13]  Christine Alvarado,et al.  Multi-domain sketch understanding , 2007, SIGGRAPH Courses.

[14]  Howard E. Shrobe,et al.  Initial Report on a Lisp Programmer's Apprentice , 1978, IEEE Transactions on Software Engineering.

[15]  Linda M. Wills,et al.  Using Attributed Flow Graph Parsing to Recognize Clichés in Programs , 1994, TAGT.

[16]  Richard C. Waters Program Translation via Abstraction and Reimplementation , 1988, IEEE Trans. Software Eng..

[17]  Christine Alvarado,et al.  Dynamically constructed Bayes nets for multi-domain sketch understanding , 2005, IJCAI.

[18]  Boris Katz,et al.  Annotating the World Wide Web using Natural Language , 1997, RIAO.

[19]  Charles Rich A Formal Representation For Plans In The Programmer's Apprentice , 1982, On Conceptual Modelling.

[20]  Richard C. Waters,et al.  Overview of the Programmer's Apprentice , 1979, IJCAI.

[21]  Boris Katz,et al.  Syntactic and Semantic Decomposition Strategies for Question Answering from Multiple Resources * , 2005 .

[22]  Krzysztof Z. Gajos,et al.  An Agent-Based System for Capturing and Indexing Software Design Meetings , 2002 .

[23]  Richard C. Waters Automatic Analysis of the Logical Structure of Programs , 1978 .

[24]  Richard C. Waters,et al.  The Programmer's Apprentice: a research overview , 1988, Computer.

[25]  Linda M. Wills,et al.  Automated Program Recognition: A Feasibility Demonstration , 1987, Artif. Intell..

[26]  Aaron Adler Segmentation and Alignment of Speech and Sketching in a Design Environment , 2003 .

[27]  Linda Mary Wills,et al.  Automated program recognition by graph parsing , 1992 .

[28]  Joseph S. Fulda The Programmer , 1997, CSOC.

[29]  Gerald Jay Sussman,et al.  Programming Viewed as an Engineering Activity , 1978 .

[30]  Howard E. Shrobe,et al.  Dependency Directed Reasoning in the Analysis of Programs which Modify Complex Data Structures , 1979, IJCAI.

[31]  Thomas F. Stahovich,et al.  Sketch based interfaces: early processing for sketch understanding , 2001, PUI '01.

[32]  Richard C. Waters,et al.  Computer aided evolutionary design for software engineering , 1981, SGAR.

[33]  Boris Katz,et al.  Natural Language Annotations for Question Answering , 2006, FLAIRS Conference.

[34]  H. Shrobe,et al.  TURNING SKETCHES INTO WORKING GEOMETRY , 1995 .

[35]  RichCharles,et al.  Recognizing a Program's Design , 1990 .