Learning to Program: The Development of Knowledge in Novice Programmers

This thesis presents a longitudinal study of novice programmers during their first year learning to program at university. The purpose of this research was to gain a deeper understanding of the ways in which novice programmers learn to program with an emphasis on their cognitive development processe...

Full description

Bibliographic Details
Main Author: Kasto, Nadia (Author)
Other Authors: Whalley, Jacqueline (Contributor), Philpott, Anne (Contributor), MacDonell, Stephen (Contributor)
Format: Others
Published: Auckland University of Technology, 2017-03-13T22:46:03Z.
Subjects:
Online Access:Get fulltext
LEADER 03216 am a22002293u 4500
001 10377
042 |a dc 
100 1 0 |a Kasto, Nadia  |e author 
100 1 0 |a Whalley, Jacqueline  |e contributor 
100 1 0 |a Philpott, Anne  |e contributor 
100 1 0 |a MacDonell, Stephen  |e contributor 
245 0 0 |a Learning to Program: The Development of Knowledge in Novice Programmers 
260 |b Auckland University of Technology,   |c 2017-03-13T22:46:03Z. 
520 |a This thesis presents a longitudinal study of novice programmers during their first year learning to program at university. The purpose of this research was to gain a deeper understanding of the ways in which novice programmers learn to program with an emphasis on their cognitive development processes. The intended outcome was a better understanding of the learning processes of novice programmers, which should enhance the ability of educators to teach, design courses, and assess programming. A key aspect of this research focused on cognitive development theories of Piaget, Vygotsky, Sfard and Cognitive Load and to what degree these theories could explain observations of novice programmers learning to write code. In order to observe and investigate how novice programmers integrate new programming structure, concepts or elements into their current understanding of code it is necessary to be able to measure how difficult writing tasks are. Thus, the first aim of this research was to develop a task difficulty framework, which consisted of a new empirically verified software metric (code structure and readability) and a SOLO classification (task complexity) for code writing tasks. This framework was then used to design nineteen code writing tasks which were of increasing difficulty and complexity so as to trigger situations that required some form of knowledge adaptation or acquisition. Over one academic year, students were observed attempting to solve these programming tasks using a think aloud protocol and were interviewed retrospectively using a stimulated recall method. These observations were then linked to the cognitive theories in a way that provides an explanation of how programming was learned by these students. The results of this research indicate that both cognitive and sociocultural approaches are important in the development of knowledge of novice programmers. Of the theories examined two were found to be the most useful. The first is Vygotsky's notions of the Zone of Proximal Development, the role of more knowledgeable others, and recent ideas about scaffolding. The second is Sfard's theory of concept development that contributes to a deeper understanding of the way novice programmers' develop patterns and reuse them in solving another programming task. The evidence about learning obtained during this study provides strong support for a change in the size and organization of the classes in which novice programmers are typically taught and in the teaching methods used. 
540 |a OpenAccess 
546 |a en 
650 0 4 |a Computer science 
650 0 4 |a Novice programmers 
650 0 4 |a Educational models 
650 0 4 |a Cognitive development 
655 7 |a Thesis 
856 |z Get fulltext  |u http://hdl.handle.net/10292/10377