Informatikdidaktik-Wiki

Dissertation:supporting_the_acquisition_of_programming_skills_with_program_construction_patterns

Kesselbacher (2021) Supporting the acquisition of programming skills with program construction patterns (Dissertation)

Referenz

Kesselbacher, @@Vorname@@: Supporting the acquisition of programming skills with program construction patterns. Dissertation, Universität Klagenfurt, 2021

Publikation

Zusammenfassung

Digital technologies are spreading wide and fast, encompassing many aspects of our daily life. This also affects education, with programming becoming incorporated in many K–12 educational standards worldwide. This early and diverse programming education imposes a challenge on traditional programming education. It necessitates the development of theory, methods, and tools to support the acquisition of programming skills on an individual basis to best facilitate learning in heterogeneous groups of programmers.Advancements in programming education can be initiated from two perspectives. The research field of computer science education offers a rich body to support novice programmers in learning to program. The research field of software engineering has a great collection of results regarding the differences between novice programmers and expert programmers, culminating in the effort to characterize expert programming skills. Notably, there is a gap between these two perspectives, which is the adequate and individual support of programmers that have overcome the first struggles of novice programmers but have not developed into experts either.My research work, presented in this thesis, draws inspiration from two sources to work towards closing the identified gap. First is the idea that architectural design patterns of programs constitute distilled expert programming skills and that patterns of program construction could provide the same. Second is the rising field of learning analytics that provides the technical and methodological means to research programming data on a new scale.Combining these inspirations, my research encompasses a detailed investigation of the sequential process of program construction of individual programmers. The assumption that drives my research is that expert programmers follow specific patterns in the sequential construction of their programs and that such patterns have regular, discernible forms that can be elicited with learning analytics approaches and subsequently utilized to improve programming education.To study this assumption, I developed a learning analytics system that consists of IDE-based instrumentation tools on client-side and a uniform data collection server. With the help of this system, it is possible to record and store snapshots of block-based (Scratch 2, Scratch 3) and text-based (IntelliJ, Java) programs during their sequential creation on the granularity of key strokes, and later analyze them on the granularity of key strokes or compilations.I define specific variable-based program construction patterns as a typed sequence of compilable program changes that affect related program statements of a variable to assess whether and how expert programmers construct their programs differently. I conduct a mixed methods study to identify patterns used by student programmers and professional programmers and conduct a comparative study to report on significant and substantial differences in the use of patterns between programmers of different skill levels.My results provide evidence that program construction patterns can indeed capture expert programming skills. Specifically, my comparative results show with significance that, while the use of individual patterns is more dependent on the specific algorithmic problem to be solved, professional programmers have a favored order of program construction that is measurable with my learning analytics approaches. For my example problems, they construct the for loop header before initializing their data variable. This is notably different from the order of program construction favored by student programmers, which is the construction of the for loop header after initializing the data variable.Knowledge of this evidence can give rise to instructional methodologies for programming education that are supported by theoretical and, with my results, empirical findings. My results suggest that the acquisition of expert programming skills can be facilitated by introducing the experts' program construction patterns to learning programmers – not for them to memorize the order of construction, but to let them break out of reasoning associated with novice programmers and let them engage in abstract reasoning towards becoming an expert. Moreover, my results provide impulses for learning analytics methods and tools that can facilitate the real-time assessment and feedback of program construction, thereby enabling the support of individual skill acquisition.

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information