Project

Back to overview

Conceptual Change in Learning to Program

Applicant Hauswirth Matthias
Number 184689
Funding scheme Project funding (Div. I-III)
Research institution Software Institute Facoltà di scienze informatica Università della Svizzera italiana
Institution of higher education Università della Svizzera italiana - USI
Main discipline Information Technology
Start/End 01.12.2019 - 30.11.2023
Approved amount 753'858.00
Show all

Keywords (3)

computer science education; programming languages; conceptual change

Lay Summary (German)

Lead
Programmieren zu lernen hat sich in mehreren internationalen Studien als ausserordentlich schwierig erwiesen. Das Ziel dieses Forschungsprojekts ist es, diesen Lernprozess im Detail zu untersuchen und zu verstehen, und dadurch die Grundlagen für effektiveren Programmierunterricht zu schaffen.
Lay summary
Mehre internationale Studien in den letzten zwei Jahrzehnten haben aufgezeigt, dass es ausserordentlich schwierig ist, Programmieren zu lernen. Ein Grossteil der Studenten, sogar an Spitzenuniversitäten, bekunden Mühe, einfache Programmieraufgaben korrekt zu lösen. In einer Zeit wo Programmieren nicht nur auf Universitätsstufe, sonder auch in der Schule unterrichtet werden soll, ist es besonders wichtig die Vorgänge und Schwierigkeiten beim Erlernen des Programmierens besser zu verstehen.

Das Ziel dieses Forschungsprojekts ist es, den Lernprozess im Detail zu untersuchen. Wir werden sowohl das sich verändernde Verständnis der Programmiersprachenkonzepte, als auch das graduelle Erlernen der zugehörigen Lösungsstrategien individueller Lernender über längere Zeit genau beobachten, dokumentieren, und analysieren. Dazu werden wir die Lernenden beim Programmieren beobachten und befragen, und wir werden Methoden entwickeln, um deren Programme automatisch zu analysieren. Wir werden unsere verschiedenartigen Beobachtungen triangulieren, um Hypothesen über typische Lernprogressionen aufzustellen. Diese Hypothesen werden wir dann experimentell testen, um spezifische Schwierigkeiten und mögliche pädagogische Ansätze zu identifizieren. 

Die Ergebnisse aus diesem Projekt können als Grundlage dienen sowohl für neue fachdidaktische Ansätze für erfolgreicheren Programmierunterricht, als auch für neue auf Lernende ausgerichtete Programmiersprachen.
Direct link to Lay Summary Last update: 30.08.2019

Responsible applicant and co-applicants

Employees

Project partner

Abstract

In “The Challenges of Learning Programming”, Guzdial provides a striking summary of a sequence of multi-national multi-institutional studies that have shown surprisingly low performance of students in simple programming tasks, even at top universities. As Stern points out, the “precondition for top performance [...] is a very extensive base of concrete situational knowledge”. In this project we will connect those two points: we will study students throughout programming courses to find out when and how they succeed, struggle, or fail to acquire that concrete knowledge. Following a fragment view of conceptual change, we will conduct conceptual snapshots as well as microgenetic studies, to investigate detailed paths and patterns in the acquisition of conceptual as well as procedural knowledge.We will focus our studies on threshold concepts, which require particularly challenging conceptual change. Unlike in prior work, our observations of conceptual knowledge change will be guided by the complete formal syntax and semantics of the languages learned by the students. The language specifications we will use consist of between 1000 and 1500 semantic rules. These rules are on a sub-concept granularity similar to the facets or p-prims of the knowledge-in-pieces approach of conceptual change.Concurrently with the studies of the change in conceptual knowledge, we will study the corresponding change in procedural knowledge and the shift in strategy use, because, as prior research shows, these two kinds of knowledge are interwoven and need to be studied together.In the exploratory stage of the project, we will capture student performance in weekly mastery checks that involve definitional, tracing, and code writing questions. We will then perform fine-grained qualitative analyses of the recorded performance, mapping behaviors and artifacts to language concepts (via a-priori coding with syntactic and semantic rules) and programming strategies (via open coding). We will then identify patterns and formulate hypotheses about the paths of conceptual change and the shifts in strategy use.In the subsequent experimental stage, we will then conduct focused controlled experiments to refute or confirm the hypotheses formulated in the exploratory stage. The goal is to identify specific difficulties in the acquisition of threshold concepts, and possible pedagogical means to overcome those difficulties.We will conduct the studies in two different courses that teach two different languages, Java (statically typed) and JavaScript (dynamically typed). This will provide us with the potential to generalize our findings beyond a specific language. To have comparable formalisms for both languages, we will use the formal syntax and semantics implemented on top of the K framework.Our findings will provide answers to several open research questions in computer science education, and we hope they will inform future curricula, assessments, as well as features of educational languages.
-