Although programming is often seen as a key element of constructionist approaches, the research on learning to program through a constructionist strategy is somewhat limited, mostly focusing on how to bring the abstract and formal nature of programming languages into “concrete” or even tangible objects, graspable even by children with limited abstraction power. However, in order to enable constructionism in programming several challenges must be addressed. One of the crucial difficulties for novice programmers is to understand the complex relationship between the program itself (the text of the code) and the actions that take place when the program is run by the interpreter. A good command of the notional machine is a necessary condition to build programming skills, as is recognizing how a relatively low number of abstract patterns can be applied to a potentially infinite spectrum of specific conditions. Programming languages and environments can either help or distract novices, thus the choice is not neutral and their characteristics should be analyzed carefully to foster a good learning context. The mastery of the notional machine, however, is just the beginning of the game: to develop a real competence one must be able to think about problems in a way suitable to automatic elaboration; to devise, analyse, and compare solutions, being able to adapt them to unexpected hurdles and needs. Moreover, it is important to learn to work productively in a team, in an “organized” way: agile methods seem based on common philosophical grounds with constructionism.
Mattia Monga, M.L. (2018). Learning to program in a constructionist way.
Learning to program in a constructionist way
Mattia Monga
;Michael Lodi;
2018
Abstract
Although programming is often seen as a key element of constructionist approaches, the research on learning to program through a constructionist strategy is somewhat limited, mostly focusing on how to bring the abstract and formal nature of programming languages into “concrete” or even tangible objects, graspable even by children with limited abstraction power. However, in order to enable constructionism in programming several challenges must be addressed. One of the crucial difficulties for novice programmers is to understand the complex relationship between the program itself (the text of the code) and the actions that take place when the program is run by the interpreter. A good command of the notional machine is a necessary condition to build programming skills, as is recognizing how a relatively low number of abstract patterns can be applied to a potentially infinite spectrum of specific conditions. Programming languages and environments can either help or distract novices, thus the choice is not neutral and their characteristics should be analyzed carefully to foster a good learning context. The mastery of the notional machine, however, is just the beginning of the game: to develop a real competence one must be able to think about problems in a way suitable to automatic elaboration; to devise, analyse, and compare solutions, being able to adapt them to unexpected hurdles and needs. Moreover, it is important to learn to work productively in a team, in an “organized” way: agile methods seem based on common philosophical grounds with constructionism.I documenti in IRIS sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.