圖片來源:攝圖網(wǎng)
最近,少兒編程好像一夜之間成了一個比較火熱的概念,媒體上和朋友圈經(jīng)常能夠看到 “編程將會被引入高考”“孩子再不開始學習就會輸在起跑線上”“未來職業(yè)需要”之類的報道,以此作為應該讓孩子學習編程的理由。作為一個在這個領域摸爬滾打了一段時間的人,我想從另外一個角度談談自己對少兒編程的一些認識。
少兒編程的起源
說起少兒編程,就不得不提到一個人,Logo語言之父、構(gòu)造主義(Constructionism)學習理論的提出者——西蒙·派珀特(Seymour Papert)教授。由于生活經(jīng)歷的因素,派珀特教授對齒輪特別感興趣。他提到,在自己的學習生涯中,經(jīng)常能夠?qū)⒁恍﹦e人認為非常復雜的概念和“齒輪模型”結(jié)合起來,從而對這些知識理解的更加深刻,而且在玩齒輪的過程中,常常能夠不經(jīng)意地學到很多知識。
那么,這和少兒編程有什么關系呢?派珀特教授結(jié)合自己的學習經(jīng)歷想到,要是每一個孩子都能找到自己感興趣的“齒輪模型”,那學習將會變得非常主動而且高效。但是,并不是每個孩子都會喜歡齒輪,那有什么樣的一種工具能夠滿足每個孩子不同的興趣呢?答案是計算機,通過編程的方式讓計算機去構(gòu)建孩子感興趣的事情,并在這個過程中不經(jīng)意地學到知識是很完美的一種方式。于是派珀特教授很自然的將自己發(fā)明的Logo語言應用到了教育領域,讓孩子通過編程的方式使數(shù)學學習變得看得見、摸得著。后來麻省理工媒體實驗室,又在派珀特教授的理論基礎上推出了新一代的編程語言——也就是現(xiàn)在非常流行的Scratch編程語言。
所以說,少兒編程其實并不是一個新鮮的事物,它是構(gòu)造主義學習理論的一種體現(xiàn),隨著技術的發(fā)展,這種體現(xiàn)形式會不斷的發(fā)生變化,比如從Logo發(fā)展到了Scratch,以后也許還會發(fā)生變化。但是它作為一種讓孩子更好學習的工具的本質(zhì)不會發(fā)生變化。
如果對于Scratch背后的學習理論感興趣,可以去看看派珀特教授的這些著作《Mindstorms: Children, Computers, and Powerful Ideas》、《The Children's Machine: Rethinking School in the Age of the Computer》、《The Connected Family: Bridging the Digital Generation Gap》。
對于編程學習的觀點
基于上面的討論,編程作為一種工具,是為了讓孩子找到一種適合自己的學習方式,最終的目的是讓每一個孩子能夠更加主動、高效的學習。所以任何脫離了這個目標的編程教學,或多或少都是有一些欠缺的。我覺得對待編程學習,應該有的態(tài)度是:
觀點1:編程教學最終的目標應該聚焦在如何通過編程的方式去幫助學生表達創(chuàng)意,而不是聚焦在教會學生編程的基本技巧。當然,掌握這些編程的技巧是孩子在學習過程中不可逾越的一個階段。
這個觀點似乎有點老生常談,但我認為從心里面真正理解這條教學目標非常重要,因為這條“綱”指引著課程的設計方向。
為了達到這樣的教學目標,從教學設計的角度來看,我認為應該分成“學”和“啟”兩個階段。
“學”即編程基礎知識的學習,這個階段最終的目標是幫助孩子掌握編程的基本技巧。以Scratch的學習為例,一些小游戲的設計、Makey Makey音樂的創(chuàng)作、Minecraft的結(jié)合等等,大多數(shù)孩子都很感興趣,都可以納入進來。但是比較重要的一點,是讓孩子覺得“編程有意義”,所以孩子課本上學到的、生活中見到的現(xiàn)象是比較合適的主題,而且學習這樣的主題也更容易引起共鳴。
比如,將小學數(shù)學課上學到的加減乘除運算融合到下面的賽跑游戲中,一方面數(shù)學知識有了實際的應用場景,另一方面游戲的設計也能激發(fā)孩子的創(chuàng)作熱情。
再比如,在講解與坐標相關的指令時,引入笛卡爾發(fā)明平面直角坐標系的小故事,讓孩子知道創(chuàng)作一個蜘蛛結(jié)網(wǎng)的程序是有意義的。
另外,諸如Minecraft等游戲都是孩子比較喜歡的,與其單純地讓他們沉迷于這些游戲中,不如通過編程的方式對這些游戲進行再創(chuàng)作,讓孩子覺得學習是與自己的生活息息相關的,從而增強對學習的興趣。
在完成“學”這個階段后,孩子已經(jīng)掌握了基本的編程技巧。還是以Scratch為例,到進入下一個階段的學習時,根據(jù)我的觀察,常見的一種做法是給孩子尋找邏輯更加復雜的游戲,以此證明孩子還沒有完全掌握編程,或者直接過渡到另外一種編程語言。我的觀點是,如果局限在編程邏輯的復雜度上,那這樣的學習是沒有盡頭的,因為Scratch能實現(xiàn)無限復雜的邏輯。而且這樣去設計,會給孩子造成學習編程只能編寫游戲的錯覺,同時也減少了孩子主動應用編程表達想法的機會。
所以,我認為第二個階段更重要的在于“啟”,即以發(fā)布小專題或者項目的形式啟發(fā)學生主動的觀察現(xiàn)象、應用編程。這個階段的學習成果包括其他知識的學習報告、程序的實現(xiàn)、改進的方案等。
比如,“為什么有的玩具小車會自動沿著黑線行駛(循跡)”,針對這樣的項目,需要孩子對循跡的原理進行探索,有的孩子就了解到了循跡傳感器的原理,原來是與光學上的反射現(xiàn)象有關。然后通過Scratch模擬出一個循跡小車的運行效果。比如,下面的小車就可以沿著賽道自動的行駛,在不同顏色的賽道,小車的速度還不一樣??梢钥吹胶谏≤嚨淖钋懊嬗屑t色和綠色的兩個小方塊,這是孩子了解了循跡的原理后模擬的傳感器。
又比如,“Minecraft可以控制生活中的物體嗎?”孩子在完成這個項目時,需要思考之前學過編程可以控制Minecraft,之前也學過編程可以控制生活中的物體比如LED燈。那編程是否可以作為一個中介讓Minecraft控制LED燈呢?經(jīng)過嘗試以后,他們會發(fā)現(xiàn)原來不僅可以用Minecraft去控制LED燈,還可以控制很多其他的物體,而且利用一些傳感器還可以反過來控制Minecraft。那么,是否可以做成一個控制Minecraft小玩具呢?于是就有了下面從圖紙設計、原型加工、程序設計到實際模型的成果。
“學”和“啟”,更重要的在于“啟”,正如派珀特教授指出,我們只需要為孩子營造出可以學習的環(huán)境,孩子總能在自己動手的過程中,不經(jīng)意的學到很多知識。
觀點2:課程體系的延伸源于孩子創(chuàng)意表達需求的延伸。
在編程教學過程中,經(jīng)常有家長問老師“孩子應該從何學起”,得到的回答往往是:應該從圖形化編程開始,然后過渡到代碼編程,最后學習算法。
我的理解是,既然編程是孩子創(chuàng)意表達的一種工具,那么很顯然對于不同年齡又或者是不同興趣的孩子來說,他們對周圍世界的認知是不一樣的,需要表達的創(chuàng)意也就不一樣。有的孩子對世界的理解可能是天馬行空的想象,想到的就是合理的;有的孩子可能對真實世界已有的現(xiàn)象充滿了好奇,比如樓道里的燈天黑了為什么會自動亮;還有的孩子可能會想,我能不能讓這個世界更加便利。
從這個角度出發(fā),作為老師,選出合適的編程工具以滿足孩子上述需求似乎更加合理。而且為了符合孩子的認知能力,這種編程工具應該盡量簡單、不需要特別高的門檻,孩子能夠通過簡單的操作即可將自己的想法具象化?;诖?,Scratch、Arduino(S4A等)、APP Inventor等圖形化的編程工具都是比較合適的選擇。通過Scratch,孩子可以“零風險”的實現(xiàn)天馬行空的想法;通過Arduino編程項目,孩子對生活中常見的物理現(xiàn)象會有更加真實的認識;而通過APP Inventor制作手機APP,絕對是孩子開發(fā)生活便利方案的好工具。從工具學習難易程度來說,Scratch、Arduino、APP Inventor難度依次遞進。孩子選擇哪一種編程工具,一方面要根據(jù)興趣,另一方面也要考慮認知能力。不過需要指出的是,不是從一種編程工具過渡到另一種編程工具,孩子的能力就會提升。上面提到的3種圖形化編程工具,要達到自如的表達創(chuàng)意都不容易,深入學習都是對計算思維的極大鍛煉。
當然,對于一些理解能力強、學習快、對計算機特別感興趣的孩子來說,在小學階段嘗試代碼編程、學習算法、朝計算機專業(yè)發(fā)展也未嘗不可。
觀點3:老師的作用在于啟發(fā)、引導、鼓勵,不在于教。
編程學習是以學生為主導的學習過程,孩子的蛻變在于興趣驅(qū)動下的主動學習,而不是老師教會。在我實際教學的過程中,經(jīng)常會發(fā)現(xiàn)孩子更加享受于自己摸索與創(chuàng)作。那么老師的價值何在?我認為老師的作用恰恰就在于讓孩子“有意義的主動學習”。要實現(xiàn)這個目的,需要老師去塑造一種讓孩子主動學習的氛圍,拋出讓孩子感興趣的、貼近他們生活的話題,激發(fā)讓孩子利用編程去創(chuàng)作的興趣。
上述提到的蜘蛛結(jié)網(wǎng)、四則運算、控制Minecraft等都是有效的嘗試。在此基礎上老師還需要幫助學生解決編程過程中的一些程序問題,也就是解惑,同時需要對學生的創(chuàng)作成果進行反饋,鼓勵學生分享、進一步的創(chuàng)作。
觀點4:為了更加方便的學習,編程學習社區(qū)非常重要。
編程學習不應該孤立的存在,分享與獲得反饋是孩子保持學習動力的很重要的因素。從我在學校教學的過程來看,一個基于編程的學習社區(qū)是非常重要的,一方面孩子可以非常方便地存儲自己的作品,另一方面同伴或者老師也可以利用這個系統(tǒng)及時地給予孩子反饋。事實上,很多情況,孩子的進步來源于同伴之間的交流,而且作為互聯(lián)網(wǎng)時代的原住民,現(xiàn)在的孩子更習慣于這樣的學習方式,國外也有相應的研究證明這一點。這也是Scratch官網(wǎng)社區(qū),看似沒有老師教,但學習其實無時無刻不在發(fā)生的原因。
觀點5:判斷孩子是否學會了編程,唯一標準是其是否愿意并能自如利用編程工具實現(xiàn)自己的想法。
很多情況下,會創(chuàng)作一個游戲,并不能代表孩子“學會”了如何應用編程。也許換一種情形或者場景,孩子就不會應用了。只有在不同的場景下,針對不同的問題,甚至是孩子自己提出問題,都能夠自如地應用編程技巧實現(xiàn)想法,才是真正的學會了如何去學習,這也是我所理解的編程學習的目的。而要達到這樣的目標離不開合理的學習習慣的培養(yǎng),老師的作用就在于陪同孩子一起養(yǎng)成這樣的習慣。
兩天前,牛牛給我發(fā)了一個新創(chuàng)作的作品,還特地給我介紹了他創(chuàng)作這個作品的初衷,原來是他上個月參加了一個數(shù)學考試,里面有道數(shù)學題給了他靈感,于是他將這道數(shù)學題做成了一個Scratch小游戲,希望更多的小朋友能夠挑戰(zhàn)數(shù)學。下面是牛牛的作品,不僅為自己的作品設計了Logo,而且還詳細說明了游戲的規(guī)則。對于一個旁觀者來說,作品使用起來好像很簡單,但是對于創(chuàng)作者來說,一定是在完全理解了數(shù)學知識的基礎上,才能將這個小游戲的功能設計出來。更關鍵的是生活中任意一個小小的發(fā)現(xiàn),都有可能催生出一個創(chuàng)意的作品。
所以,不管牛牛的作品是否完美,能將一個抽象的數(shù)學題通過編程轉(zhuǎn)化為一個具象的小游戲作品,就是極大的成功。我想這不正是派珀特教授想要的學習方式嗎?學習編程,讓編程反哺學習(learn to code, code to learn)。
當然,我也很高興看到一些學生參加編程或者創(chuàng)客類的比賽而得獎,這至少也是對他們學習能力的一種認可與證明。
幾年之前,當我追尋著派珀特教授的理念踏入少兒編程行業(yè)的時候,我就在想做教育一定要懷著一顆敬畏的心去做,我很高興自己始終堅持初心。寫下這篇文章,希望能和大家一起交流、探索,把這件事做好。
注:本文來自讀者投稿,不代表芥末堆觀點。
2、如果你也從事教育,并希望被芥末堆報道,請您 填寫信息告訴我們。