Abstract
We developed a tutor for imperative programming in C++. It covers algorithm formulation, program design and coding – all three stages involved in writing a program to solve a problem. The design of the tutor is epistemic, i.e., true to real-life programming practice. The student works through all the three stages of programming in interleaved fashion, and within the context of a single code canvas. The student has the sole agency to compose the program and write the code. The tutor uses goals and plans as prompts to scaffold the student through the programming process designed by an expert. It provides drill-down immediate feedback at the abstract, concrete and bottom-out levels at each step. So, by the end of the session, the student is guaranteed to write the complete and correct program for a given problem. We used model-based architecture to implement the tutor because of the ease with which it facilitates adding problems to the tutor. In a preliminary study, we found that practicing with the tutor helped students solve problems with fewer erroneous actions and less time.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Gomes, A., Mendes, A.J.: SICAS: interactive system for algorithm development and simulation. In: Computers and Education - Towards an Interconnected Society, pp. 159–166 (2001)
Carlisle, M., Wilson, T., Humphries, J., Hadfield, S.: RAPTOR: a visual programming environment for teaching algorithmic problem solving. ACM SIGCSE Bull. 37(1), 176–180 (2005)
Kumar, A.N.: Model-based reasoning for domain modeling in a web-based intelligent tutoring system to help students learn to debug C++ programs. In: Cerri, S.A., Gouardères, G., Paraguaçu, F. (eds.) ITS 2002. LNCS, vol. 2363, pp. 792–801. Springer, Heidelberg (2002). https://doi.org/10.1007/3-540-47987-2_79
Davis, R.: Diagnostic reasoning based on structure and behavior. Artif. Intell. 24, 347–410 (1984)
Reiser, B., Anderson, J., Farrell, R.: Dynamic student modelling in an intelligent tutor for lisp programming. In: Proceedings of the Ninth International Joint Conference on Artificial Intelligence, pp. 8–14 (1985)
Johnson, W.L.: Intention-Based Diagnosis of Errors in Novice Programs. Morgan Kaufman, Palo Alto (1986)
Bonar, J., Cunningham, R.: BRIDGE: tutoring the programming process, in intelligent tutoring systems: lessons learned. In: Psotka, J., Massey, L., Mutter, S. (eds.) Lawrence Erlbaum Associates, Hillsdale (1988)
Lane, C., VanLehn, K.: Teaching the tacit knowledge of programming to novices with natural language tutoring. Comput. Sci. Educ. 15(3), 183–201 (2005)
Guzdial, M., Hohmann, L., Konneman, M., Walton, C., Soloway, E.: Supporting programming and learning-to-program with an integrated CAD and scaffolding workbench. Interact. Learn. Environ. 6(1&2), 143–179 (1998)
Jin, W.: Pre-programming analysis tutors help students learn basic programming concepts. In: Proceedings of the 39th SIGCSE Technical Symposium on Computer Science Education (SIGCSE 2008), New York, NY, USA, pp. 276–280. Association for Computing Machinery (2008)
Jin, W., Corbett, A., Lloyd, W., Baumstark, L., Rolka, C.: Evaluation of guided-planning and assisted-coding with task relevant dynamic hinting. In: Trausan-Matu, S., Boyer, K.E., Crosby, M., Panourgia, K. (eds.) ITS 2014. LNCS, vol. 8474, pp. 318–328. Springer, Cham (2014). https://doi.org/10.1007/978-3-319-07221-0_40
Barr, V., Trytten, D.: Using Turing’s craft Codelab to support CS1 students as they learn to program. ACM Inroads 7(2), 67–75 (2016)
Hu, M., Winikoff, M., Cranefield, S.: A process for novice programming using goals and plans. In: Proceedings of the Fifteenth Australasian Computing Education Conference (ACE 2013), vol. 136, pp. 3–12. Australian Computer Society, Inc. (2013)
Soloway, E.: Learning to program = learning to construct mechanisms and explanations. Commun. ACM 29(9), 850–858 (1986)
Crow, T., Luxton-Reilly, A., Wuensche, B.: Intelligent tutoring systems for programming education: a systematic review. In: Proceedings of the 20th Australasian Computing Education Conference (ACE 2018), New York, NY, USA, pp. 53–62. Association for Computing Machinery (2018). https://doi.org/10.1145/3160489.3160492
Keuning, H., Jeuring, J., Heeren, B.: A systematic literature review of automated feedback generation for programming exercises. ACM Trans. Comput. Educ. 19(1), 1–43 (2018)
Le, N.T., Strickroth, S., Gross, S., Pinkwart, N.: A review of AI-supported tutoring approaches for learning programming. In: Nguyen, N., van Do, T., le Thi, H. (eds.) Advanced Computational Methods for Knowledge Engineering, pp. 267–279. Springer, Heidelberg (2013). https://doi.org/10.1007/978-3-319-00293-4_20
Price, T.W., Brown, N.C., Lipovac, D., Barnes, T., Kölling, M.: Evaluation of a frame-based programming editor. In: Proceedings of the 2016 ACM Conference on International Computing Education Research (ICER 2016), New York, NY, USA, pp. 33–42. Association for Computing Machinery (2016). https://doi.org/10.1145/2960310.2960319
Hooshyar, D., Ahmad, R.B., Yousefi, M., Yusop, F.D., Horng, S.-J.: A flowchart-based intelligent tutoring system for improving problem-solving skills of novice programmers. J. Comput. Assist. Learn. 31(4), 345–361 (2015). https://doi.org/10.1111/jcal.12099
Scott, A., Watkins, M., McPhee, D.: E-learning for novice programmers – a dynamic visualization and problem solving tool. In: 3rd International Conference Information and Communication Technologies: From Theory to Applications, ICTTA, 7–11 April, Damascus, Syria, pp. 1–6 (2008)
Gegg-Harrison, T.S.: Exploiting program schemata in a prolog tutoring system. Ph.d. thesis, Duke University, Durham (1993)
Weragama, D., Reye, J.: Analysing student programs in the PHP intelligent tutoring system. Int. J. Artific. Intell. Edu. 24(2), 162–188 (2014)
Hartanto, B., Reye, J.: CSTutor: an intelligent tutoring system that supports natural learning. In: Proceedings of the Conference on Computer Science Education Innovation and Technology, pp. 19–26 (2013)
Sykes, E.: Design, development and evaluation of the java intelligent tutoring system. Technol. Instr. Cogn. Learn. 8(1), 25–65 (2010)
Holland, J., Mitrovic, A., Martin, B.: J-LATTE: a constraint-based tutor for Java. In: Proceedings of the Conference on Computers in Education, pp. 142–146 (2009)
Gross, S., Pinkwart, N.: Towards an integrative learning environment for java programming. In: Proceedings of the IEEE Conference on Advanced Learning Technologies, pp. 24–28 (2015)
Gerdes, A., Heeren, B., Jeuring, J., Thomas van Binsbergen. , L.: Ask-Elle: an adaptable programming tutor for Haskell giving automated feedback. Int. J. Artif. Intell. Educ. 2016, 1–36 (2016)
Brusilovsky, P., Malmi, L., Hosseini, R., Guerra, J., Sirkiä, T., Pollari-Malmi, K.: An integrated practice system for learning programming in python: design and evaluation. Res. Pract. Technol. Enhanc. Learn. 13(1), 1–40 (2018). https://doi.org/10.1186/s41039-018-0085-9
Chen, S., Morris, S.: Iconic programming for flowcharts. In: Java, Turing, ETC’, Conference on Innovation and Teaching Computer Science Education (ITiCSE), Caparica, Portugal, ACM, pp. 104–107 (2005)
Acknowledgments
Partial support for this work was provided by the National Science Foundation under grant DUE-1432190.
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
Kumar, A.N. (2021). An Epistemic Model-Based Tutor for Imperative Programming. In: Roll, I., McNamara, D., Sosnovsky, S., Luckin, R., Dimitrova, V. (eds) Artificial Intelligence in Education. AIED 2021. Lecture Notes in Computer Science(), vol 12749. Springer, Cham. https://doi.org/10.1007/978-3-030-78270-2_38
Download citation
DOI: https://doi.org/10.1007/978-3-030-78270-2_38
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-78269-6
Online ISBN: 978-3-030-78270-2
eBook Packages: Computer ScienceComputer Science (R0)