Examining Transfer Between Programming Languages in Computer Science
Effective Years: 2022-2026
Over the last decade, the Computer Science for All movement has worked to broaden participation in computer science for students in every grade band. The Computer Science for All movement popularized visual, or block-based, programming languages. These languages allow students to program through a graphical user interface, dragging and dropping blocks of code into place. Because students do not have to type or memorize syntax, block-based languages can make programming more accessible to younger students. Although block-based languages are commonly used when teaching young students, there is currently no standardization around what programming languages students learn, and there is a wide variety of curricula that teach different languages. As a result, students may be asked to learn multiple block-based languages over time. Each programming language can have a distinct look and feel (i.e., the colors and shapes of the blocks) and a distinct syntax, and there can be underlying structural and conceptual similarities and differences between languages. A perennial issue in computer science education, then, is that learners at all ages frequently need to be able to use and navigate between a variety of different languages (this is true among older students and text-based languages as well). This project seeks to understand how to help students connect concepts they learned in one programming language to related concepts in a new programming language. Many studies in computer science education have examined how students perform when their coursework transitions from one programming language to another. However, the field still lacks a well-specified theory of how and when conceptual knowledge successfully transfers in the context of programming that can be used to inform teacher professional development and instructional design. This project broadly aims to develop and use such a computer science-specific theory in the context of middle school students as they engage with three different block-based programming languages.
There are three goals for this project: 1) Conduct a longitudinal study of diverse middle school students as they progress through a three-language course sequence; 2) Develop a computer science-specific theory of transfer to describe how students connect knowledge from previously-learned programming languages to new programming languages; and 3) Use the theory of transfer to develop and pilot-test an instructional module that facilitates students’ knowledge transfer from one programming language to another. The investigation will occur in the San Francisco Unified School District, in which many schools currently teach a sequence of three middle school computer science classes with three different block-based programming languages. Further, the project aims to investigate both student and teacher experiences across multiple courses. In this way, the specific research setting will facilitate the longitudinal nature of the study. This project seeks to contribute to the field in three important ways. First, a computer science-specific theory of transfer would add to the body of research on students’ learning of computer science concepts in the context of different programming language, highlighting features of languages that students find particularly salient or important. Second, the theory would guide computer science teachers and curriculum developers in designing instruction to help students transfer knowledge from previously learned programming languages, thus potentially improving student achievement in computer science. Third, the theory would also guide computer science assessment developers. The multilingual nature of K-12 computer science education pathways presents a challenge for assessing student growth over time, as students may perform differently on conceptually identical items depending on what programming language is being used to assess. A computer science-specific theory of transfer would guide assessment developers in creating items and measurement models that could estimate language-specific programming knowledge and language-independent conceptual knowledge.
This project is supported by NSF's EHR Core Research (ECR) program. The ECR program emphasizes fundamental STEM education research that generates foundational knowledge in the field. Investments are made in critical areas that are essential, broad and enduring: STEM learning and STEM learning environments, broadening participation in STEM, and STEM workforce development. The program supports the accumulation of robust evidence to inform efforts to understand, build theory to explain, and suggest intervention and innovations to address persistent challenges in education.
This award reflects NSF's statutory mission and has been deemed worthy of support through evaluation using the Foundation's intellectual merit and broader impacts review criteria.