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.

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.
2018
Constructionism 2018 : Constructionism, Computational Thinking and Educational Innovation: conference proceedings
906
929
Mattia Monga, Michael Lodi, Dario Malchiodi, Anna Morpurgo, Bernadette Spieler
File in questo prodotto:
Eventuali allegati, non sono esposti

I documenti in IRIS sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/11585/668400
 Attenzione

Attenzione! I dati visualizzati non sono stati sottoposti a validazione da parte dell'ateneo

Citazioni
  • ???jsp.display-item.citation.pmc??? ND
  • Scopus ND
  • ???jsp.display-item.citation.isi??? ND
social impact