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.
There are many studies on transfer between tools @cite_13 @cite_11 @cite_27 @cite_26 but fewer studies examining transfer in programming. Transfer of declarative knowledge between programming languages has been studied by Harvey and Anderson @cite_7 , which showed strong effects of transfer between Lisp and Prolog. Scholtz and Wiedenbeck @cite_22 conducted a think-aloud protocol where programmers who were experienced in Pascal or C tried implementing code in Icon. They demonstrated that programmers could suffer from negative transfer of programming languages. Wu and Anderson conducted a similar study on problem-solving transfer, where programmers who had experience in Lisp, Pascal and Prolog wrote solutions to programming problems @cite_1 . The authors found positive transfer between the languages which could improve programmer productivity. Bower @cite_34 used a new teaching approach called Continual And Explicit Comparison (CAEC) to teach Java to students who have knowledge of C++. They found that students benefited from the continual comparison of C++ concepts to Java. However, none of these studies investigated tool support.
@cite_26 @cite_22 @cite_7 @cite_1 @cite_27 @cite_34 @cite_13 @cite_11
95226708 1989111274 2018632979 2085735891
Abstract : This study investigated knowledge transfer among three programming languages -- namely, LISP, PROLOG, and PASCAL. Three experiments were conducted: the first two on transfer between LISP and PROLOG, while the third on transfer between LISP and PASCAL. The results from all the experiments showed evidence of positive transfer; the transfer was positive in terms of time savings from programming in one language to that in another for the same problem. Furthermore, it was found that transfer in programming was largely localized in writing the first drafts of programs. Sometimes this transfer was manifested even though different algorithms were used in programming in different languages for the same problem. To account for the results on transfer across programming languages, a three-level transfer -- namely, transfer at the syntactic, algorithmic, and problem levels --theory was proposed in this paper. (Author) (kr) This paper describes a Continual And Explicit Comparison (CAEC) approach to overcoming proactive inhibition and amplifying proactive facilitation in a second year Java course. The approach utilizes continual and explicit comparison to students' prior learning (in this case C++ programming knowledge) in early stages of learning the new language in order to more rapidly build understanding and more definitively form concept boundaries between the two languages. The majority of students felt the approach supported learning of the second language (proactive facilitation) without causing any interference with second language learning (i.e. minimal proactive inhibition). Some students also indicated that the approach enhanced their understanding of the first language (retroactive facilitation) and overwhelmingly agreed that the approach did not interfere with their understanding of the first language (i.e. minimal retroactive inhibition). Students also indicated that their Java programming ability and their enjoyment of programming increased during the period that the continual and explicit comparison approach was applied. Declarative transfer from one domain to another can be observed in a systematic decrease in the time spent reading an instructional text and processing help during problem solving. Two experiments, done in the programming domain, tested the hypothesis that subjects introduced to a first programming language develop a representation of basic programming concepts that helps them integrate new declarative knowledge from a second programming language. This article shows that the effect on reading was greater for pages that were conceptually close across texts and for subjects who had fully mastered the basic concepts in the first language. A regression model of reading showed an effect on processes that are responsible for the analysis of novel words and examples, whereas general strategic reading processes remained unaffected. The increased reading speed was not accompanied by a greater understanding of the text. Effects of a common programming interface and transfer of procedural knowledge appeared to be negligible on the kind of problems considered. This study supports the distinction between procedural and declarative transfer. Abstract This paper reports on the design rationale and formative evaluation of an intelligent tool to aid intermediate and advanced student programmers, who already have knowledge of another programming language, in acquiring a working knowledge of key parts of the Ada programming language. Research on transfer between programming languages has shown that, while previous programming experience helps students to learn subsequent languages, it also can be a source of negative transfer. In particular, students have little trouble with the syntax of the new language, but they do have difficulty in planning a solution which takes advantage of the features of the new language. Our tool, ADAPT, applies existing artificial intelligence technologies to the pedagogical problem of transfer between programming languages, with emphasis on the problem of developing programming plans which are appropriate to Ada. ADAPT was designed based on the findings of research in the cognition of programming. A prototype of the tool was developed, and a formative evaluation was carried out to evaluate the cognitively-based design decisions guiding ADAPT.