Automated Personalized Feedback in Introductory Java Programming MOOCs

Currently, there is a "boom" in introductory programming courses to help students develop their computational thinking skills. Providing timely, personalized feedback that makes students reflect about what and why they did correctly or incorrectly is critical in such courses. However, the limited number of instructors and the great volume of submissions instructors need to assess, especially in Massive Open Online Courses (MOOCs), prove this task a challenge. One solution is to hire graders or create peer discussions among students, however, feedback may be too general, incomplete or even incorrect. Automatic techniques focus on: a) Functional testing, in which feedback usually does not sufficiently guide novices, b) Software verification to find code bugs, which may confuse novices since these tools usually skip true errors or produce false errors, and c) Comparing using reference solutions, in which a large amount of reference solutions or pre-existing correct submissions are usually required. This paper presents a semantic-aware technique to provide personalized feedback that aims to mimic an instructor looking for code snippets in student submissions. These snippets are modeled as subgraph patterns with natural language feedback attached to them. Submissions are transformed into extended program dependence graphs combining control and data flows. We leverage subgraph matching techniques to compute the adequate personalized feedback. Also, constraints correlating patterns allow performing fine-grained assessments. We have evaluated our method on several introductory programming assignments and a large number of submissions. Our technique delivered personalized feedback in milliseconds using a small set of patterns, which makes it appealing in real-world settings.

[1]  Jeannette M. Wing An introduction to computer science for non-majors using principles of computation , 2007, SIGCSE.

[2]  Lijun Chang,et al.  Efficient Subgraph Matching by Postponing Cartesian Products , 2016, SIGMOD Conference.

[3]  Armando Solar-Lezama,et al.  sk_p: a neural program corrector for MOOCs , 2016, SPLASH.

[4]  Richard E. Clark,et al.  Why Minimal Guidance During Instruction Does Not Work: An Analysis of the Failure of Constructivist, Discovery, Problem-Based, Experiential, and Inquiry-Based Teaching , 2006 .

[5]  Jeong-Hoon Lee,et al.  An In-depth Comparison of Subgraph Isomorphism Algorithms in Graph Databases , 2012, Proc. VLDB Endow..

[6]  Terence Parr,et al.  The Definitive ANTLR 4 Reference , 2013 .

[7]  Sumit Gulwani,et al.  Semi-supervised verified feedback generation , 2016, SIGSOFT FSE.

[8]  Andy Podgurski,et al.  The Probabilistic Program Dependence Graph and Its Application to Fault Diagnosis , 2010, IEEE Trans. Software Eng..

[9]  Nihar B. Shah Some Scaling Laws for MOOC Assessments , 2014 .

[10]  Leonidas J. Guibas,et al.  Learning Program Embeddings to Propagate Feedback on Student Code , 2015, ICML.

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

[12]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1984, TOPL.

[13]  Viktor Kuncak,et al.  Software verification and graph similarity for automated evaluation of students' assignments , 2012, Inf. Softw. Technol..

[14]  Daniel D. Garcia,et al.  CS10K Teachers by 2017?: Try CS1K+ students NOW! Coping with the Largest CS1 Courses in History , 2016, SIGCSE.

[15]  David S. Johnson,et al.  Computers and Intractability: A Guide to the Theory of NP-Completeness , 1978 .

[16]  Stephen H. Edwards Using software testing to move students from trial-and-error to reflection-in-action , 2004 .

[17]  Daniel Jackson,et al.  A software system for grading student computer programs , 1996, Comput. Educ..

[18]  Carlos R. Rivero,et al.  On isomorphic matching of large disk-resident graphs using an XQuery engine , 2014, 2014 IEEE 30th International Conference on Data Engineering Workshops.

[19]  Albert L. Baker,et al.  Preliminary design of JML: a behavioral interface specification language for java , 2006, SOEN.

[20]  Swarat Chaudhuri,et al.  Learning to Grade Student Programs in a Massive Open Online Course , 2014, 2014 IEEE International Conference on Data Mining.

[21]  Anupam Bhattacharjee,et al.  CodeBlast: a two-stage algorithm for improved program similarity matching in large software repositories , 2013, SAC '13.

[22]  Chanchal Kumar Roy,et al.  Comparison and evaluation of code clone detection techniques and tools: A qualitative approach , 2009, Sci. Comput. Program..

[23]  Andrew Lim,et al.  On automated grading of programming assignments in an academic institution , 2003, Comput. Educ..

[24]  Jeong-Hoon Lee,et al.  Turboiso: towards ultrafast and robust subgraph isomorphism search in large graph databases , 2013, SIGMOD '13.

[25]  Johan Jeuring,et al.  Towards a Systematic Review of Automated Feedback Generation for Programming Exercises , 2016, ITiCSE.

[26]  Jiawei Han,et al.  Top-K interesting subgraph discovery in information networks , 2014, 2014 IEEE 30th International Conference on Data Engineering.

[27]  Paul Roe,et al.  Static Analysis of Students' Java Programs , 2004, ACE.

[28]  Sue Fitzgerald,et al.  What are we thinking when we grade programs? , 2013, SIGCSE '13.

[29]  Jignesh M. Patel,et al.  TALE: A Tool for Approximate Large Graph Matching , 2008, 2008 IEEE 24th International Conference on Data Engineering.

[30]  Temesghen Kahsai,et al.  JayHorn: A Framework for Verifying Java programs , 2016, CAV.

[31]  Sumit Gulwani,et al.  Automated clustering and program repair for introductory programming assignments , 2016, PLDI.

[32]  Carlos R. Rivero,et al.  Efficient and scalable labeled subgraph matching using SGMatch , 2017, Knowledge and Information Systems.

[33]  Karam Gouda,et al.  CSI_GED: An efficient approach for graph edit similarity computation , 2016, 2016 IEEE 32nd International Conference on Data Engineering (ICDE).

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

[35]  Stuart H. Zweben,et al.  Booming Enrollments: Survey Data , 2016, SIGCSE.

[36]  Yam San Chee,et al.  Transformation-Based Diagnosis of Student Programs for Programming Tutoring Systems , 2003, IEEE Trans. Software Eng..

[37]  Armando Solar-Lezama,et al.  Program sketching , 2012, International Journal on Software Tools for Technology Transfer.

[38]  Philip S. Yu,et al.  GPLAG: detection of software plagiarism by program dependence graph analysis , 2006, KDD '06.

[39]  R. Paul Wiegand,et al.  A Data-Driven Analysis of Informatively Hard Concepts in Introductory Programming , 2016, SIGCSE.

[40]  Sumit Gulwani,et al.  Feedback generation for performance problems in introductory programming assignments , 2014, SIGSOFT FSE.