It's Like Python But: Towards Supporting Transfer of Programming Language Knowledge

Expertise in programming traditionally assumes a binary novice-expert divide. Learning resources typically target programmers who are learning programming for the first time, or expert programmers for that language. An underrepresented, yet important group of programmers are those that are experienced in one programming language, but desire to author code in a different language. For this scenario, we postulate that an effective form of feedback is presented as a transfer from concepts in the first language to the second. Current programming environments do not support this form of feedback. In this study, we apply the theory of learning transfer to teach a language that programmers are less familiar with-such as R-in terms of a programming language they already know-such as Python. We investigate learning transfer using a new tool called Transfer Tutor that presents explanations for R code in terms of the equivalent Python code. Our study found that participants leveraged learning transfer as a cognitive strategy, even when unprompted. Participants found Transfer Tutor to be useful across a number of affordances like stepping through and highlighting facts that may have been missed or misunderstood. However, participants were reluctant to accept facts without code execution or sometimes had difficulty reading explanations that are verbose or complex. These results provide guidance for future designs and research directions that can support learning transfer when learning new programming languages.

[1]  Peter G. Polson,et al.  Transfer between text editors , 1987, CHI '87.

[2]  Arvind Satyanarayan,et al.  Augmenting Code with In Situ Visualizations to Aid Program Understanding , 2018, CHI.

[3]  Gavriel Salomon,et al.  T RANSFER OF LEARNING , 1992 .

[4]  Björn Hartmann,et al.  Tutorons: Generating context-relevant, on-demand explanations and demonstrations of online code , 2015, 2015 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[5]  Weng-Keen Wong,et al.  Too much, too little, or just right? Ways explanations impact end users' mental models , 2013, 2013 IEEE Symposium on Visual Languages and Human Centric Computing.

[6]  John R. Anderson,et al.  A Keystroke Analysis of Learning and Transfer in Text Editing , 1987, SGCH.

[7]  Lucy M. Berlin,et al.  Beyond Program Understanding: A Look at Programming Expertise in Industry , 2001 .

[8]  Slava Kalyuga,et al.  The Expertise Reversal Effect , 2003 .

[9]  Susan Elliott Sim,et al.  The ramp-up problem in software projects: a case study of how software immigrants naturalize , 1998, Proceedings of the 20th International Conference on Software Engineering.

[10]  Philip J. Guo Online python tutor: embeddable web-based program visualization for cs education , 2013, SIGCSE '13.

[11]  Annabelle McIver,et al.  Continual and explicit comparison to promote proactive facilitation during second computer language learning , 2011, ITiCSE '11.

[12]  John R. Anderson,et al.  Transfer of Declarative Knowledge in Complex Information-Processing Domains , 1996, Hum. Comput. Interact..

[13]  Jean Scholtz,et al.  Learning second and subsequent programming languages: A problem of transfer , 1990, Int. J. Hum. Comput. Interact..

[14]  C. Bray Transfer of learning. , 1928 .

[15]  A Ohri Python for R Users: A Data Science Approach , 2017 .

[16]  Peter G. Polson,et al.  A quantitative theory of human-computer interaction , 1987 .

[17]  R. Sternberg,et al.  Transfer on Trial: Intelligence, Cognition and Instruction , 1993 .

[18]  N. Pennington,et al.  Transfer of Training Between Cognitive Subskills: Is Knowledge Use Specific? , 1995, Cognitive Psychology.

[19]  G. Engelbeck,et al.  A test of a common elements theory of transfer , 1986, CHI '86.

[20]  Geoffrey L. Herman,et al.  Identifying student misconceptions of programming , 2010, SIGCSE.

[21]  Susan Wiedenbeck,et al.  An intelligent tool to aid students in learning second and subsequent programming languages , 1996, Comput. Educ..

[22]  John R. Anderson,et al.  Problem-Solving Transfer among Programming Languages , 1990 .

[23]  Edward Cutrell,et al.  "Yours is better!": participant response bias in HCI , 2012, CHI.

[24]  Philip J. Guo,et al.  Omnicode: A Novice-Oriented Live Programming Environment with Always-On Run-Time Value Visualizations , 2017, UIST.

[25]  Margaret M. Recker,et al.  Learning Strategies and Transfer in the Domain of Programming , 1994 .

[26]  Margaret M. Burnett,et al.  Programming, Problem Solving, and Self-Awareness: Effects of Explicit Guidance , 2016, CHI.

[27]  Peter Maurer,et al.  The Cambridge Handbook of the Learning Sciences , 2022 .

[28]  D. Schunk Learning Theories: An Educational Perspective , 1991 .

[29]  Claudius Magnus Kessler Transfer of programming skills in novice lisp learners , 1988 .