Learning to Program in a Constructionist Way Mattia Monga, Michael Lodi, Dario Malchiodi, Anna Morpurgo, Bernadette Spieler
Total Page:16
File Type:pdf, Size:1020Kb
Learning to program in a constructionist way Mattia Monga, Michael Lodi, Dario Malchiodi, Anna Morpurgo, Bernadette Spieler To cite this version: Mattia Monga, Michael Lodi, Dario Malchiodi, Anna Morpurgo, Bernadette Spieler. Learning to program in a constructionist way. Proceedings of Constructionism 2018, Aug 2018, Vilnius, Lithuania. hal-01913065 HAL Id: hal-01913065 https://hal.inria.fr/hal-01913065 Submitted on 6 Nov 2018 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. Learning to program in a constructionist way Constructionism Working Group 6 Michael Lodi∗ Dario Malchiodi Bernadette Spieler Alma Mater Studiorum - Mattia Monga Technische Universität Graz Università di Bologna Anna Morpurgo Austria Italy [email protected] [email protected] [email protected] [email protected] [email protected] Università degli Studi di Milano Italy ABSTRACT skills, as is recognizing how a relatively low number of abstract Although programming is often seen as a key element of construc- patterns can be applied to a potentially infinite spectrum of specific tionist approaches, the research on learning to program through situations.Programming languages and environments can either a constructionist strategy is somewhat limited, mostly focusing help or distract novices, thus the choice is not neutral and their on how to bring the abstract and formal nature of programming characteristics should be analyzed carefully to foster a good learn- languages into “concrete” or even tangible objects, graspable even ing context. The mastery of the notional machine, however, is just by children with limited abstraction power. However, in order to the beginning of the game: to develop a real competence one must enable constructionism in programming several challenges must be be able to think about problems in a way suitable to automatic addressed. One of the crucial difficulties for novice programmers elaboration; to devise, analyse, and compare solutions, being able is to understand the complex relationship between the program to adapt them to unexpected hurdles and needs. Moreover, it is itself (the text of the code) and the actions that take place when important to learn to work productively in a team, in an “organized” the program is run by the interpreter. A good command of the way: agile methods seem based on common philosophical grounds notional machine is a necessary condition to build programming with constructionism. ∗Also with INRIA Focus, Italy. 1 INTRODUCTION Permission to make digital or hard copies of part or all of this work for personal or Educators, generals, dieticians, psychologists, and parents program. Armies, students, classroom use is granted without fee provided that copies are not made or distributed and some societies are programmed. [Alan Perlis] for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for third-party components of this work must be honored. Constructionism [Papert and Harel 1991] is a strategy of educa- For all other uses, contact the owner/author(s). tion which has its roots in Piaget’s constructivist theory of learning Constructionism, August 20–25, 2018, Vilnius, Lithuania © 2018 Copyright held by the owner/author(s). as an active process, in which people actively construct knowledge from their personal experience of the world. In general, students 1 Constructionism, August 20–25, 2018, Vilnius, Lithuania Lodi et al. do not just receive pre-built ideas from teachers: they have to make them up by engaging themselves with problems, projects, and other people (instructors, but also peers). Papert’s constructionism indeed emphasizes the importance of having personally-meaningful goals and “public artifacts” (not necessarily concrete ones: either “a sand castle on the beach or a theory of the universe” [Papert and Harel 1991]) that can be shared and discussed with others interested in the same (learning) enterprise [Resnick 1996]. This is sometimes summarized with the four P-words: Projects, Peers, Passion, Play and this motto indeed inspired successful educational initiatives such as the Scratch programming language [Resnick 2014]. 1.1 Constructionism and programming However, while programming is often seen as a key element of constructionist approaches (starting from Papert’s LOGO, a pro- gramming language designed to enable the learning of geometry), the research on learning to program through a constructionist strat- egy is somewhat limited, mostly focusing on how to bring the Figure 1: Creative learning spiral [Resnick 2017] abstract and formal nature of programming languages into “con- crete” or even tangible objects, graspable even by children with limited abstraction power [Hauswirth et al. 2017; Horn and Jacob (2) the actions that take place when the program is run by the 2007; Resnick et al. 2009]. Notwithstanding this, constructionist interpreter. ideas are floating around mainstream programming practice and We thus need to know the interpreter in order to program, in they are even codified in some software engineering approaches: ag- particular we need to know: ile methods like eXtreme Programming [Beck and Andres 2004], for • the set of basic actions it is able to perform, example, suggest several techniques that can be easily connected • a language it is able to understand, with rules on how to to the constructionist word of advice about discussing, sharing, compose basic actions, and productively collaborating to successfully build knowledge • the relation between syntax and semantics, that is what ac- together [Resnick 1996]; moreover the incremental and iterative tions it will perform given a description, and, conversely, process of creative thinking and learning [Resnick 2007] fits well how to describe a given sequence of actions so that it will with the agile preference to “responding to change over following perform them. a plan” [Beck et al. 2001]. The first aspect, that is the program source code, is explicit, visible. The iterative process described by Resnick in [Resnick 2007] The second one instead, that is the actions that take place when the originated by observing how kindergarteners learn, and is now program is run, is somewhat implicit, hidden in the execution time called "creative learning spiral" (Figure1), that describes MIT’s world, and not so immediate to grasp for novices. Moreover, this view on how to learn creatively [Resnick 2017]. When you learn by aspect is sometimes underestimated by both teachers and learners: creating something (e.g. a computer program) you imagine what teachers, as experts, give it for granted; learners tend to construct you want to do, create a project based on this idea, play with your personal intuitive, not necessarily coherent, ideas of what will creation, share your idea and your creation with others, reflect on happen. the experience and feedback received from others, and all this leads This dichotomy of programming — its static visible code and its you to imagine new ideas, new functionalities, new improvements implicit dynamics — emerges as a critical issue when learning to for your project, or new projects. The process is iterated many program, as shown by studies from different perspectives. To cite a times. few [Sorva 2013]: This spiral describes an iterative process, highly overlapping • Phenomenography studies show how novice programmers with iterative software development cycle (see 5.1). tend to perceive programming as no more than the produc- tion of code, missing to relating instructions in the program 2 WHAT DOES IT MEAN TO LEARN to what happens when the program is executed. PROGRAMMING? • Studies on programming misconceptions point out how most The basic assumption/premise behind programming — i.e., produc- of programming misconceptions have to do with aspects ing a precise description of how to carry out a task or to solve a that are not readily visible in the code but are related to the problem — is that an interpreter, different from the producer of the execution time, both in term of what will happen and of description, can understand it and effectively carry out the task as what will not unless explicitly specified in the code. • described. There are thus two distinct but tightly tied aspects in Threshold concept theory identifies program dynamics asa programming: candidate threshold concept in programming as it has many of the features that characterise threshold concepts; among (1) the program itself (the text of the code), others: it is a troublesome barrier to student understanding, 2 Learning to program in a constructionist way Constructionism, August 20–25, 2018, Vilnius, Lithuania it transforms how the student perceives the subject, it marks • syntax: novices should be introduced first to the logical as- a boundary between programmers and end users. pects of programming and only at a later stage to the syntax; To help novice programmers take into account also the dynamic • a constructivist approach: the construction of knowledge