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
2018720828 2018632979 95226708 1989111274 1970668914
Learning second and subsequent programming languages is easier than learning a first programming language because many concepts and constructs are shared. However, it is still a hard task. In this protocol analysis of moderately experienced programmers transferring to a new programming language, we classified episodes by whether they involved the syntactic, semantic, or planning level of programming knowledge. We discovered that most episodes involve planning and that in solving a given subproblem there are typically many cycles of language‐independent tactical planning followed by language‐dependent implementation planning. On the other hand, programmers have relatively minor problems with the syntax and semantics of a new language. Our subjects’ protocols and their final programs revealed that the plans they develop are strongly influenced by their knowledge of what would be convenient and appropriate in other languages they know. This prevents them from taking full advantage of the capabilities of the ... 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 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. All discussions of interface design criteria emphasize the importance of consistent operating procedures both within and across applications. This paper presents a model for positive transfer and thus a theoretical definition of consistency. An experiment manipulating training orders for utility tasks was designed to evaluate the transfer model. The experimental manipulations produced large transfer effects. Quantitative predictions were derived from the Kieras and Polson (1985) theory of human-computer interaction and the transfer model and fit using regression techniques. The transfer model accounted for 88 of the variance of the 31 cell means.