Abstract
Supporting novice programming learners at scale has become a necessity. Such a support generally consists of delivering automated feedback on what and why learners did incorrectly. Existing approaches cast the problem as automatically repairing learners’ incorrect programs; specifically, data-driven approaches assume there exists a correct program provided by other learner that can be extrapolated to repair an incorrect program. Unfortunately, their repair potential, i.e., their capability of providing feedback, is hindered by how they compare programs. In this paper, we propose a flexible program alignment based on program dependence graphs, which we enrich with semantic information extracted from the programs, i.e., operations and calls. Having a correct and an incorrect graphs, we exploit approximate graph alignment to find correspondences at the statement level between them. Each correspondence has a similarity attached to it that reflects the matching affinity between two statements based on topology (control and data flow information) and semantics (operations and calls). Repair suggestions are discovered based on this similarity. We evaluate our flexible approach with respect to rigid schemes over correct and incorrect programs belonging to nine real-world introductory programming assignments. We show that our flexible program alignment is feasible in practice, achieves better performance than rigid program comparisons, and is more resilient when limiting the number of available correct programs.
This material is based upon work supported by the National Science Foundation under Grant No. 1915404.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Coetzee, D., Fox, A., Hearst, M.A., Hartmann, B.: Should your MOOC forum use a reputation system? In: CSCW, pp. 1176–1187 (2014)
Garcia, D.D., Campbell, J., DeNero, J., Dorf, M.L., Reges, S.: CS10K teachers by 2017?: Try CS1K+ students now! coping with the largest CS1 courses in history. In: SIGCSE, pp. 396–397 (2016)
Gulwani, S., Radicek, I., Zuleger, F.: Automated clustering and program repair for introductory programming assignments. In: PLDI, pp. 465–480 (2018)
Horwitz, S., Reps, T.W.: The use of program dependence graphs in software engineering. In: ICSE, pp. 392–411 (1992)
Jawalkar, M.S., Hosseini, H., Rivero, C.R.: Learning to recognize semantically similar program statements in introductory programming assignments. In: SIGCSE, p. 1264 (2021)
Khan, A., Wu, Y., Aggarwal, C.C., Yan, X.: NeMa: fast graph search with label similarity. PVLDB 6(3), 181–192 (2013)
Kirschner, P.A., Sweller, J., Clark, R.E.: Why minimal guidance during instruction does not work: an analysis of the failure of constructivist, discovery, problem-based, experiential, and inquiry-based teaching. Educ. Psychol. 41(2), 75–86 (2006)
Kuchaiev, O., Milenković, T., Memišević, V., Hayes, W., Pržulj, N.: Topological network alignment uncovers biological function and phylogeny. RSIF 7(50), 1341–1354 (2010)
Marin, V.J., Pereira, T., Sridharan, S., Rivero, C.R.: Automated personalized feedback in introductory Java programming MOOCs. In: ICDE, pp. 1259–1270 (2017)
Marin, V.J., Rivero, C.R.: Clustering recurrent and semantically cohesive program statements in introductory programming assignments. In: CIKM, pp. 911–920 (2019)
Monperrus, M.: Automatic software repair: a bibliography. CSUR 51(1), 17:1–17:24 (2018)
Piech, C., Huang, J., Nguyen, A., Phulsuksombati, M., Sahami, M., Guibas, L.J.: Learning program embeddings to propagate feedback on student code. In: ICML, pp. 1093–1102 (2015)
Pu, Y., Narasimhan, K., Solar-Lezama, A., Barzilay, R.: sk\_p: a neural program corrector for MOOCs. In: SPLASH, pp. 39–40 (2016)
Rodriguez, C.O.: MOOCs and the AI-Stanford like courses: Two successful and distinct course formats for massive open online courses. EURODL 15(2) (2012)
Rolim, R., et al.: Learning syntactic program transformations from examples. In: ICSE, pp. 404–415 (2017)
Sankowski, P.: Maximum weight bipartite matching in matrix multiplication time. TCS 410(44), 4480–4488 (2009)
Singh, R., Gulwani, S., Solar-Lezama, A.: Automated feedback generation for introductory programming assignments. In: PLDI, pp. 15–26 (2013)
Wang, K., Singh, R., Su, Z.: Search, align, and repair: data-driven feedback generation for introductory programming exercises. In: PLDI, pp. 481–495 (2018)
Xin, Q., Reiss, S.P.: Leveraging syntax-related code for automated program repair. In: ASE, pp. 660–670 (2017)
Zhang, S., Tong, H.: FINAL: fast attributed network alignment. In: KDD, pp. 1345–1354 (2016)
Zweben, S., Bizot, B.: 2015 Taulbee Survey. Tech. rep, Computing Research Association (2016)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2021 Springer Nature Switzerland AG
About this paper
Cite this paper
Marin, V.J., Contractor, M.R., Rivero, C.R. (2021). Flexible Program Alignment to Deliver Data-Driven Feedback to Novice Programmers. In: Cristea, A.I., Troussas, C. (eds) Intelligent Tutoring Systems. ITS 2021. Lecture Notes in Computer Science(), vol 12677. Springer, Cham. https://doi.org/10.1007/978-3-030-80421-3_27
Download citation
DOI: https://doi.org/10.1007/978-3-030-80421-3_27
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-80420-6
Online ISBN: 978-3-030-80421-3
eBook Packages: Computer ScienceComputer Science (R0)