我的儿子Ian学习编程已经快2周了,今天他完成了Playground(注:Playground是苹果公司推出的一款在iPad上学习编程的App)上第一部分的学习内容——“命令 Commands”。他的进展让我颇受鼓舞,虽然我以前也曾教10来岁的孩子学过编程,但对于一个6岁的孩子,老实说,一开始我并没有十足的把握。要知道孩子相差一岁,他们的理解和认知能力都会有着天壤之别。而且,我知道自己的孩子并不是什么天才儿童,在与同龄的孩子一起学习20以内的加减法时,当其他孩子都已能熟练地进行心算,他却还需要借助手指甚至脚趾的配合,才能珊珊来迟地给出答案。也正因此,他在编程学习方面的进步才让我对自己的教学方法以及写好这本书变得更有信心。
我要玩编程
在决定教Ian学习编程之后,我并没有马上开始,而是首先考虑如何才能引导孩子对于编程的学习兴趣。而我知道,只有“玩”才是孩子们的天性,我需要找到一个能让孩子玩编程的教学方法。为此,我比较了不同的编程语言,以及可以用于编程教学的网站、APP和其他资源,希望能够找到那门最好玩的编程语言。最终,我选择了Swift,一方面作为编程语言,它非常现代且正得到广泛的应用,使用它能够做出非常美妙的东西,而另一方面结合Playground进行教学,真的可以让学习编程变得非常有趣。
于是,我便在iPad上下载了Playground,备了课(主要是亲自完成第一章节的学习内容,并构思如何为孩子进行必要的讲解),然后挑了一个周末,把在一旁显得有些无所事事的Ian叫到了身旁,略带神秘地对他说:“爸爸来和你一起玩一个非常好玩的东西,好吗?”
听到“玩”,Ian马上两眼放光,凑上前来:“好啊,是什么呀?”
“我们要玩的是一个很厉害的东西,叫编程,只有很聪明的小孩才会玩哦”,接着我便拿出iPad,给他演示了Playground上的一个小游戏——通过简单的命令,让游戏中的主人公Byte,抓到一颗宝石。
Ian的兴趣一下子便被这可以控制的生动动画调动起来了,抢着也要来尝试,嘴里不住嚷嚷“我要玩编程,我要玩编程”。
“好的,你先别急,让爸爸先来教你怎么玩”,就这样我便开始了我的第一节编程教学课。
Tips:兴趣的引导对于孩子来说非常重要,城市中的孩子往往会背负很重的学习压力,因此,我刻意地淡化了学习,而强调玩,希望以此激发孩子的学习热情。当然,如果你只是希望自学编程或你的教学对象是大一点的孩子,则可以用更现实的编程应用场景或实例来激发他们的学习热情。
认识编程
在孩子开始玩“编程”(正式教学)之前,我们有必要清楚地向孩子解释什么是编程?
“编程是编写程序(命令)的简称,这是你与计算机的一种交流方式,通过你编写的这些命令,可以让计算机去帮助你做很多有意思的事情,比如控制无人飞机(Playground的第一章节就会用到类似的例子),做出好玩的游戏,设计出无人驾驶的汽车,还能帮助我们去月球旅行等等等等。”
Ian似乎对我所解释的编程定义很好奇,却又有些似懂非懂,忙问“那学习编程之后是不是也能让狗去做一些事情呢?”,孩子的发散思维很值得鼓励,“我们一般说的编程,是让计算机去做事情,但如果要让狗做事情,可能就会更复杂些,你可能需要让计算机与狗的大脑相连,然后再通过编程来让狗也听我们的话,这或许在你学得更深入后就能实现哦”
Tips:很多编程书虽然名字是教孩子编程,但往往一上来就会介绍编程语言,以及它们的语法等等,好像学编程就是学一门编程语言一样。然而,对于孩子来说,这种做法其实并不可取。编程与我们今天做的很多创造性工作非常类似,学习编程更重要的是学习这样一种思维方式,因此,我们应该首先站在更抽象和宏观的角度来向孩子介绍编程,并同样以孩子特有的发散的思维来加以引导,而不应过早将它与具体的某一门编程语言联系起来,这样反而会限制住学习者的思维,降低孩子们的学习热情和兴趣。
让孩子爱上编程
孩子们的兴趣是非常容易转移的,特别是对年龄更小的孩子来说,要想一件事物始终能吊起他们的胃口很难,他们的注意力往往难以长时间集中,因此,你需要控制好教学的节奏,循序渐进地进行教学。
每天就学一点点:每次学习的过程,我都会控制在20分钟-30分钟以内(这对6岁左右的孩子适合,而对于年龄稍长的孩子,则可以适当将教学时间加长),这个时间正好可以完成Playground中一个独立小节的学习,包含教一个知识点,并完成一个相对应的编程挑战。而我基本上会每天或每隔一天给孩子教学一次,即使孩子兴致很高我也不会一天内连续教授好几课。因为我需要建立一种教学的节奏,每天花一点时间,持续地学习和实践,比某一天上2-3小时的编程课,而后连续一周不去碰它要有效得多,当然也更容易持久。
激励与反馈:每次完成一个小游戏(编程游戏)后,我都会大声地将Playground中的那些激励的话大声朗读出来。大多是“你真棒...”,“做得太好了...”,我也会自我发挥加上一些自己的评论,比如“你很聪明”,“你又进步了”,“下一次的挑战会更难哟”等等,这常常是每次孩子学习完一个小节后最有成就感也是最高兴的一刻,通过努力完成一项挑战,然后获得赞扬,并期待着下一次的挑战,这可以说是一个完美的正反馈。
建立自我认知:游戏方式的教学以及适当的激励往往能够维持孩子短期内的学习热情,但要让编程真正成为孩子自己的兴趣,却绝非易事。我的方法便是给孩子贴标签,赋予他“编程小超人”的称号,并不断地强化他的这种自我认知。比如在生活中我经常会叫他“编程小超人”,并总是对他编程技艺的增长大加赞赏,另外,我还特意为他设计了一张名片,上面显著地写着“编程小超人”的称号。他非常喜欢,而当他将这些名片发给同学和朋友时,就是在不断强化着自己是编程能手的意识。当然,在学习时,他也比以前变得更加积极主动了。