Summary of Semantic Transfer in Programming Languages: Exploratory Study of Relative Novices

17 December 2020

(Ethel Tshukudu & Quintin Cutts)

Link to the paper.  

In this paper, the two researchers explore the process of knowledge transfer when novice programmers switch between programming languages, in order to learn how programming language transfer impacts code comprehension. The paper details a small group study in which programmers with varying levels of experience in procedural Python are taught object-oriented Java. The study uses interviews to explore the participants’ understanding and comprehension of the new language.

Quick summary:

  • Primary researcher: Ethel Tshukudu
  • Sample/group size: 5
  • Study size: Small-scale
  • Data type: Qualitative
  • Measures: “Think aloud” tasks and interviews

Summary of methodology:

The paper follows the five participants as they undertake a ten-week Java course in their second year at university. Four of the participants had only a year’s worth of experience using Alice and Python, whilst the final participant was an “expert” with six years of programming experience in Python, C, and C++.

Although six rounds of interviews were performed, the paper focuses on three: just prior to the first session of the Java course, after two weeks of learning Java (six teaching sessions in total), and after six weeks of the Java course (18 teaching sessions in total). These sessions were chosen as they highlight all the aspects of the “Mindshift Learning Theory” (Armstrong et al.). This framework defines three categories of knowledge transfer:

  1. A carryover concept (similar meaning in both the old and new context)
  2. A changed concept (different meaning in the new context)
  3. A novel concept (completely new to the learner)

During the interviews, participants were asked to carry out “think aloud” code comprehension tasks, and after the first session, they were also asked to note their confidence in the new language. This made up the primary data set that the researchers used to draw conclusions.

Summary of findings

The results of the interviews were analysed through the lens of the second natural language acquisition model which builds on the notion of semantic transfer and programming languages Mindshift Learning Theory

Regardless of their prior experience, the participants relied heavily on syntactically matching the new Java programs to the Python syntax that they were more familiar with.

This meant that they had little problem with the carryover concepts that were similar in both languages. As one would expect, the changed concepts were not as easy to comprehend; the syntax had changed and the participants’ reliance on this technique caused issues in comprehending the new language. Eventually, the participants were able to transfer their understanding of the concept to match the new syntax. This was not the case for novel concepts, for which there was no syntax in the participants’ previous experience. These concepts were not understood at all in the first few sessions, and almost all the participants found them more difficult to grasp even at the end of the Java course.

The paper concludes that syntax matching and semantic transfer were very important when learning carryover concepts, but they were hindering when learning changed concepts. Novel concepts were even more difficult to learn than changed concepts when relying on the use of semantic transfer.

Reviewer’s opinion

The subject of this paper is one that I feel is overlooked in the current teaching practices used in programming, especially below KS5. This paper focused on the transfer between two typed languages, and the biggest transfer currently in the teaching order before A level is from a block-based language (Scratch) to a text-based language (Python). I wonder whether the findings of this paper would apply to that transition.

I also thought it interesting that the participants in the study were not only transferring between languages, but also using a brand-new paradigm. The participants had experience with procedural programming in Python, and the new course was in object-oriented Java. This makes me wonder how the participants would have fared if they had had some experience with object-oriented programming in Python.

About the author

Mac Bowley, Learning Manager (Secondary KS4), Raspberry Pi Foundation