我的兒子Ian學(xué)習(xí)編程已經(jīng)快2周了,今天他完成了Playground(注:Playground是蘋果公司推出的一款在iPad上學(xué)習(xí)編程的App)上第一部分的學(xué)習(xí)內(nèi)容——“命令 Commands”。他的進(jìn)展讓我頗受鼓舞,雖然我以前也曾教10來歲的孩子學(xué)過編程,但對于一個6歲的孩子,老實(shí)說,一開始我并沒有十足的把握。要知道孩子相差一歲,他們的理解和認(rèn)知能力都會有著天壤之別。而且,我知道自己的孩子并不是什么天才兒童,在與同齡的孩子一起學(xué)習(xí)20以內(nèi)的加減法時,當(dāng)其他孩子都已能熟練地進(jìn)行心算,他卻還需要借助手指甚至腳趾的配合,才能珊珊來遲地給出答案。也正因此,他在編程學(xué)習(xí)方面的進(jìn)步才讓我對自己的教學(xué)方法以及寫好這本書變得更有信心。
我要玩編程
在決定教Ian學(xué)習(xí)編程之后,我并沒有馬上開始,而是首先考慮如何才能引導(dǎo)孩子對于編程的學(xué)習(xí)興趣。而我知道,只有“玩”才是孩子們的天性,我需要找到一個能讓孩子玩編程的教學(xué)方法。為此,我比較了不同的編程語言,以及可以用于編程教學(xué)的網(wǎng)站、APP和其他資源,希望能夠找到那門最好玩的編程語言。最終,我選擇了Swift,一方面作為編程語言,它非常現(xiàn)代且正得到廣泛的應(yīng)用,使用它能夠做出非常美妙的東西,而另一方面結(jié)合Playground進(jìn)行教學(xué),真的可以讓學(xué)習(xí)編程變得非常有趣。
于是,我便在iPad上下載了Playground,備了課(主要是親自完成第一章節(jié)的學(xué)習(xí)內(nèi)容,并構(gòu)思如何為孩子進(jìn)行必要的講解),然后挑了一個周末,把在一旁顯得有些無所事事的Ian叫到了身旁,略帶神秘地對他說:“爸爸來和你一起玩一個非常好玩的東西,好嗎?”
聽到“玩”,Ian馬上兩眼放光,湊上前來:“好啊,是什么呀?”
“我們要玩的是一個很厲害的東西,叫編程,只有很聰明的小孩才會玩哦”,接著我便拿出iPad,給他演示了Playground上的一個小游戲——通過簡單的命令,讓游戲中的主人公Byte,抓到一顆寶石。
Ian的興趣一下子便被這可以控制的生動動畫調(diào)動起來了,搶著也要來嘗試,嘴里不住嚷嚷“我要玩編程,我要玩編程”。
“好的,你先別急,讓爸爸先來教你怎么玩”,就這樣我便開始了我的第一節(jié)編程教學(xué)課。
Tips:興趣的引導(dǎo)對于孩子來說非常重要,城市中的孩子往往會背負(fù)很重的學(xué)習(xí)壓力,因此,我刻意地淡化了學(xué)習(xí),而強(qiáng)調(diào)玩,希望以此激發(fā)孩子的學(xué)習(xí)熱情。當(dāng)然,如果你只是希望自學(xué)編程或你的教學(xué)對象是大一點(diǎn)的孩子,則可以用更現(xiàn)實(shí)的編程應(yīng)用場景或?qū)嵗齺砑ぐl(fā)他們的學(xué)習(xí)熱情。
認(rèn)識編程
在孩子開始玩“編程”(正式教學(xué))之前,我們有必要清楚地向孩子解釋什么是編程?
“編程是編寫程序(命令)的簡稱,這是你與計(jì)算機(jī)的一種交流方式,通過你編寫的這些命令,可以讓計(jì)算機(jī)去幫助你做很多有意思的事情,比如控制無人飛機(jī)(Playground的第一章節(jié)就會用到類似的例子),做出好玩的游戲,設(shè)計(jì)出無人駕駛的汽車,還能幫助我們?nèi)ピ虑蚵眯械鹊鹊鹊取!?/p>
Ian似乎對我所解釋的編程定義很好奇,卻又有些似懂非懂,忙問“那學(xué)習(xí)編程之后是不是也能讓狗去做一些事情呢?”,孩子的發(fā)散思維很值得鼓勵,“我們一般說的編程,是讓計(jì)算機(jī)去做事情,但如果要讓狗做事情,可能就會更復(fù)雜些,你可能需要讓計(jì)算機(jī)與狗的大腦相連,然后再通過編程來讓狗也聽我們的話,這或許在你學(xué)得更深入后就能實(shí)現(xiàn)哦”
Tips:很多編程書雖然名字是教孩子編程,但往往一上來就會介紹編程語言,以及它們的語法等等,好像學(xué)編程就是學(xué)一門編程語言一樣。然而,對于孩子來說,這種做法其實(shí)并不可取。編程與我們今天做的很多創(chuàng)造性工作非常類似,學(xué)習(xí)編程更重要的是學(xué)習(xí)這樣一種思維方式,因此,我們應(yīng)該首先站在更抽象和宏觀的角度來向孩子介紹編程,并同樣以孩子特有的發(fā)散的思維來加以引導(dǎo),而不應(yīng)過早將它與具體的某一門編程語言聯(lián)系起來,這樣反而會限制住學(xué)習(xí)者的思維,降低孩子們的學(xué)習(xí)熱情和興趣。
讓孩子愛上編程
孩子們的興趣是非常容易轉(zhuǎn)移的,特別是對年齡更小的孩子來說,要想一件事物始終能吊起他們的胃口很難,他們的注意力往往難以長時間集中,因此,你需要控制好教學(xué)的節(jié)奏,循序漸進(jìn)地進(jìn)行教學(xué)。
每天就學(xué)一點(diǎn)點(diǎn):每次學(xué)習(xí)的過程,我都會控制在20分鐘-30分鐘以內(nèi)(這對6歲左右的孩子適合,而對于年齡稍長的孩子,則可以適當(dāng)將教學(xué)時間加長),這個時間正好可以完成Playground中一個獨(dú)立小節(jié)的學(xué)習(xí),包含教一個知識點(diǎn),并完成一個相對應(yīng)的編程挑戰(zhàn)。而我基本上會每天或每隔一天給孩子教學(xué)一次,即使孩子興致很高我也不會一天內(nèi)連續(xù)教授好幾課。因?yàn)槲倚枰⒁环N教學(xué)的節(jié)奏,每天花一點(diǎn)時間,持續(xù)地學(xué)習(xí)和實(shí)踐,比某一天上2-3小時的編程課,而后連續(xù)一周不去碰它要有效得多,當(dāng)然也更容易持久。
激勵與反饋:每次完成一個小游戲(編程游戲)后,我都會大聲地將Playground中的那些激勵的話大聲朗讀出來。大多是“你真棒...”,“做得太好了...”,我也會自我發(fā)揮加上一些自己的評論,比如“你很聰明”,“你又進(jìn)步了”,“下一次的挑戰(zhàn)會更難喲”等等,這常常是每次孩子學(xué)習(xí)完一個小節(jié)后最有成就感也是最高興的一刻,通過努力完成一項(xiàng)挑戰(zhàn),然后獲得贊揚(yáng),并期待著下一次的挑戰(zhàn),這可以說是一個完美的正反饋。
建立自我認(rèn)知:游戲方式的教學(xué)以及適當(dāng)?shù)募钔軌蚓S持孩子短期內(nèi)的學(xué)習(xí)熱情,但要讓編程真正成為孩子自己的興趣,卻絕非易事。我的方法便是給孩子貼標(biāo)簽,賦予他“編程小超人”的稱號,并不斷地強(qiáng)化他的這種自我認(rèn)知。比如在生活中我經(jīng)常會叫他“編程小超人”,并總是對他編程技藝的增長大加贊賞,另外,我還特意為他設(shè)計(jì)了一張名片,上面顯著地寫著“編程小超人”的稱號。他非常喜歡,而當(dāng)他將這些名片發(fā)給同學(xué)和朋友時,就是在不斷強(qiáng)化著自己是編程能手的意識。當(dāng)然,在學(xué)習(xí)時,他也比以前變得更加積極主動了。