An Automated Framework for Recommending Program Elements to Novices (N)

Novice programmers often learn programming by implementing well-known algorithms. There are several challenges in the process. Recommendation systems in software currently focus on programmer productivity and ease of development. Teaching aides for such novice programmers based on recommendation systems still remain an under-explored area. In this paper, we present a general framework for recognizing the desired target for partially-written code and recommending a reliable series of edits to transform the input program into the target solution. Our code analysis is based on graph matching and tree edit algorithms. Our experimental results show that efficient graph comparison techniques can accurately match two portions of source code and produce an accurate set of source code edits. We provide details on implementation of our framework, which is developed as a plugin for Java in Eclipse IDE.

[1]  Collin McMillan,et al.  A search engine for finding highly relevant applications , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[2]  Laurie Hendren,et al.  Soot: a Java bytecode optimization framework , 2010, CASCON.

[3]  George C. Verghese,et al.  Graph similarity scoring and matching , 2008, Appl. Math. Lett..

[4]  Sumit Gulwani,et al.  Automated feedback generation for introductory programming assignments , 2012, PLDI.

[5]  Gerhard Fischer,et al.  Cognitive View of Reuse and Redesign , 1987, IEEE Software.

[6]  Brad A. Myers,et al.  Debugging reinvented , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[7]  Ambuj K. Singh,et al.  Dynamic Query-Based Debugging of Object-Oriented Programs , 2004, Automated Software Engineering.

[8]  Martin P. Robillard,et al.  Recommendation Systems for Software Engineering , 2010, IEEE Software.

[9]  Ivan Bratko,et al.  Data-Driven Program Synthesis for Hint Generation in Programming Tutors , 2014, Intelligent Tutoring Systems.

[10]  Mario Vento,et al.  A (sub)graph isomorphism algorithm for matching large graphs , 2004, IEEE Transactions on Pattern Analysis and Machine Intelligence.

[11]  Brad A. Myers,et al.  Usability Issues in the Design of Novice Programming Systems , 1996 .

[12]  Marlon Etheredge Fast exact graph matching using adjacency matrices , 2012, PCG@FDG.

[13]  James Fogarty,et al.  Assieme: finding and leveraging implicit references in a web search interface for programmers , 2007, UIST '07.

[14]  Gail C. Murphy,et al.  Using structural context to recommend source code examples , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[15]  Brad A. Myers,et al.  Six Learning Barriers in End-User Programming Systems , 2004, 2004 IEEE Symposium on Visual Languages - Human Centric Computing.

[16]  Scott R. Klemmer,et al.  Example-centric programming: integrating web search into the development environment , 2010, CHI.

[17]  Jeffrey S. Foster,et al.  Understanding source code evolution using abstract syntax tree matching , 2005, MSR.

[18]  David F. Redmiles,et al.  Reducing the variability of programmers' performance through explained examples , 1993, INTERCHI.

[19]  Kenneth R. Koedinger,et al.  Automating Hint Generation with Solution Space Path Construction , 2014, Intelligent Tutoring Systems.

[20]  Daqing Hou,et al.  An evaluation of the strategies of sorting, filtering, and grouping API methods for Code Completion , 2011, 2011 27th IEEE International Conference on Software Maintenance (ICSM).

[21]  Daqing Hou,et al.  CriticAL: A critic for APIs and libraries , 2012, 2012 20th IEEE International Conference on Program Comprehension (ICPC).

[22]  Mira Mezini,et al.  Learning from examples to improve code completion systems , 2009, ESEC/SIGSOFT FSE.

[23]  Antonija Mitrovic,et al.  An Intelligent SQL Tutor on the Web , 2003, Int. J. Artif. Intell. Educ..

[24]  Matias Martinez,et al.  Fine-grained and accurate source code differencing , 2014, ASE.

[25]  Sumit Gulwani,et al.  Automated feedback generation for introductory programming assignments , 2012, ACM-SIGPLAN Symposium on Programming Language Design and Implementation.

[26]  Michael H. Böhlen,et al.  Approximate Matching of Hierarchical Data Using pq-Grams , 2005, VLDB.

[27]  Kuo-Chung Tai,et al.  The Tree-to-Tree Correction Problem , 1979, JACM.

[28]  Richard J. Anderson,et al.  Supporting active learning and example based instruction with classroom technology , 2007, SIGCSE '07.

[29]  Yann Riche,et al.  The role of conceptual knowledge in API usability , 2011, 2011 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[30]  Thomas W. Mastaglio,et al.  Using critics to empower users , 1990, CHI '90.