我儿子Ian学习编程快2周了,今天他完成了Playground学习编程App上的第一部分学习内容——》命令”。他的进步让我感到鼓舞,虽然我以前教过10岁的孩子如何编码,但老实说,一开始我并不确定一个6岁的孩子。要知道孩子相差一岁,他们的理解和认知能力会有很大的不同。而且,我知道我的孩子不是天才儿童。和同龄孩子学习20以内的加减法,其他孩子心算都熟练的时候,他还需要手指甚至脚趾的配合。只有这样,杉杉才能迟迟给出答案。也正是因为如此,他在编程学习上的进步,让我对自己的教学方法和本书的写作更有信心。我想玩编程在决定教伊恩学习编程之后,我并没有马上着手,而是首先想到了如何引导孩子们学习编程的兴趣。而我知道,只有“玩”才是孩子的天性。我需要找到一种让孩子玩编程的教学方法。为此,我比较了不同的编程语言,以及可以用来教授编程的网站、应用程序和其他资源,希望找到最有趣的编程语言。最后,我选择了Swift。一方面,作为一种编程语言,它非常现代并且被广泛使用。它可以用来制作非常漂亮的东西。另一方面结合Playground进行教学,确实可以让学习编程变得更简单。很有意思。于是,我在iPad上下载了Playground,备课(主要是亲自完成***章的学习内容,构思如何对孩子进行必要的讲解),然后挑了一个周末,把看起来有点闲到一边。伊恩在一旁叫了一声,略带神秘的对他说道:“爹地是来陪你玩一些很好玩的,好吗?”听到“打”的一声,伊恩顿时眼睛一亮,身体前倾:“好的,有什么事吗?”“我们要玩的是一个很厉害的东西,叫做编程,只有非常聪明的孩子才会玩。”然后我拿出iPad,给他看了Playground上的游戏。小游戏——让游戏中的主角Byte通过简单的命令抢夺宝石。可控的生动动画立刻调动了伊恩的兴趣,他争先恐后地尝试起来,不停地喊着“我要玩编程,我要玩编程”。“好吧,别着急,让爸爸先教你怎么玩”,于是我开始了我的第一堂编程教学课。Tips:兴趣的引导对孩子来说很重要。城市中的孩子往往承受着沉重的学习压力。因此,我有意淡化学习,重玩,希望能激发孩子们的学习热情。当然,如果你只是想自学编程或者你的教学对象是年龄较大的孩子,你可以通过更真实的编程应用场景或例子来激发他们的学习热情。理解编程在孩子开始玩“编程”(正式教学)之前,我们有必要给孩子清楚的解释一下什么是编程?你写的命令可以让计算机帮你做很多有趣的事情,比如控制无人机(Playground第一章会用到类似的例子),制作好玩的游戏,设计无人车。它还可以帮助我们去月球旅行等等。”伊恩似乎对我解释的编程定义很好奇,但又不是很理解,于是他连忙问道,“狗学了编程后,能不能去做点什么?”,孩子们的发散思维非常值得鼓励,“我们什么通常说编程就是让计算机来做事,但是如果要让狗来做事,可能就比较复杂了。你可能需要让电脑和狗的大脑连接起来,然后通过编程让狗听我们说话,这在你学得更深之后也许是可以的。”Tips:虽然很多编程书籍的名字都是教孩子编程,他们经常介绍编程语言,它们的语法等等,看起来学习编程就是学习编程语言。但是,对于孩子来说,这种做法其实是不可取的。编程和我们今天做的很多创造性工作很相似。学习编程更重要的是要学会这样的思维方式,所以首先要从更抽象、更宏观的角度向孩子介绍编程,还要以孩子特有的发散思维为导向,不能与过早学习特定的编程语言,会限制学习者的思维,降低孩子学习的积极性和兴趣。让孩子爱上编程Children的兴趣很容易转移,尤其是年龄较小的孩子,很难找到一件总能引起他们食欲的东西,他们的注意力往往难以长时间集中,因此需要控制好教学节奏并循序渐进地教导。每天学一点点:我会把学习过程控制在20分钟到30分钟内(这个适合6岁左右的孩子,大点的孩子可以适当延长教学时间),这个时间刚好够用完成Playground中一个独立部分的学习,包括传授一个知识点和完成相应的编程挑战。而我基本上是每天或者隔天给孩子上课,即使孩子很感兴趣,我也不会一天教好几节课。因为我需要建立一个教学节奏,每天花一点时间,不断地学习和练习,比某天上2-3小时的编程课,然后一周不碰要有效得多,而且当然更容易持久。激励与反馈:每完成一个小游戏(编程游戏),我都会在Playground大声朗读激励性的话语。主要是“你真棒……”,“干得好……”,我也会加上一些自己的评论,比如“你很聪明”,“你又进步了”,“下一个挑战将是更难了”等等。这往往是孩子学完一节课后最充实、最快乐的时刻。在努力完成一个挑战后,他会得到表扬,期待下一个挑战。可以说建立自我意识:游戏化教学和适当的激励往往可以在短期内保持孩子的学习热情,但要让编程真正成为孩子自己的兴趣绝非易事,我的方法是给孩子贴上标签,给他“编程小超人”的称号,不断强化他的自我认知。另外,我特地为他设计了一张名片,c上面写着“编程小超人”的称号。他非常喜欢,当他把这些名片发给同学朋友时,也在不断强化自己做编程高手的意识。当然,在学习的时候,他比以前更加主动了。Tips:孩子乐于学习是最理想的。不要一开始就操之过急,影响孩子的学习兴趣。也可以像我一样做一张名片或者画一幅画贴在家里显眼的地方,鼓励孩子成为编程高手。关于如何设计儿童名片的简单方法,我也会在后面穿插的设计教学中告诉大家。准备工作虽然我们的最终目标是教孩子们使用Swift语言做出一些有趣的东西,但是现在,我们不需要过多关注Swift语言本身,因为在Playground的前几章中,有不会是一句关于Swift语言的语法,而是更强调在游戏中学习和掌握编程的基本思维。因此,作为必要的准备,我们要做的就是在iPad上下载PlaygroundAPP,初步了解APP的使用方法。一台iPad您只需要一台iPad即可使用Palyground教您的孩子编码。当孩子们完成所有课程并熟练掌握这些编程思想和技能后,他们可以从iPad转移到个人PC或Mac上,使用那些流行的IDE(集成开发环境)来创建更复杂、更有趣的应用程序。Tips:很多家长对孩子用iPad会很排斥,觉得老是在玩,或者影响视力,但我想说,以后的孩子生活在这些电子设备的包围中,还是让他们尽快熟悉吧尽可能熟练地使用它们,它们和我们过去要求孩子掌握写作技巧一样重要。并且学习本课程不需要在iPad上花费太多时间。Ian每次在iPad上完成任务的时间不会超过30分钟。下载Playground,进入AppStore,然后在搜索框中输入“Playground”,回车,就会看到这个应用。单击“获取”进行安装。获取课程Playground会不断推出新的编程教学课程,我们正在使用这套名为LearntoCode的教程。当我写这篇文章时,第三套课程LearntoCode3已经发布。我们可以在底栏选择“精选”按钮,然后选择我们需要的课程,在弹出的页面点击“获取”进行下载。可以通过单击底栏上的“我的游乐场”按钮来查看已下载的课程。点击任一已下载的课程,即可开始我们的编程教学。(下图中我下载了LearntoCode1-3系列课程和HourofCode课程,这是Code.org推出的一小时编程活动中使用Palyground进行编程教学的体验课)Tips:由于网络原因,部分课程可能下载速度较慢,可在上午网络条件好的时候下载。此外,每次Palyground版本更新(增加新功能)时,部分原有课程可能无法使用,您可能需要删除并重新获取课程。界面和功能安装好后,想必你已经迫不及待地开始使用Playground探索编程世界了。别着急,虽然Playground非常简单易学,但我们还是需要简单了解一下Playground的界面和最常用的功能。界面Playground中的每个子课程都是一个带有编程挑战的迷你游戏。学习者通过输入命令来控制游戏中的主角字节完成任务。我们以“命令”一章的第一小节为例。下图中的任务目标是让字节抢到他面前的红宝石。整个界面分为左右两部分,左边是学习内容区和编码区,右边是可以通过命令控制的动画演示区。当学习者点击编码区域时,他可以输入命令(或者通过选择底部栏中自动出现的命令来快速输入)。完成命令输入后,您可以通过动画演示区的“RunMyCode”按钮执行您输入的命令,并查看动画演示的执行效果。如果您成功完成任务,Playground会提示您通过关卡并引导您进入下一节学习。ChooseYourHeroPlayground为我们设置了三个不同的主角,他们有着不同的颜色、形状和鲜明的个性。在动画界面点击英雄,可以进入动画角色选择界面,选择你喜欢的英雄,一起完成接下来的挑战。常用功能Playground提供了很多有趣的附加功能,比如动画录制你的编程结果,截图,你可以通过功能菜单来尝试。但是下面三个功能,我觉得对编程教学特别有帮助:ResetPage:点击菜单栏的省略号图标,会弹出Tools(工具选项),选择“ResetPage”可以帮助你快速恢复到原来的样子部分的初始状态。这个功能非常好用,尤其是在学习初期,孩子容易乱写命令,通过这个重置选项,可以快速回到初始状态,重新开始,大大降低了孩子的学习成本错误,他们会更愿意再试一次,而不会因为需要一遍又一遍地还原代码而减损编程的乐趣。StepThroughMyCode:点击动画演示区左下方的仪表盘图标,可以显示运行选项。StepThrough(单步执行)是程序员最常用的调试方式,我们也可以使用这种方式在Playground中运行我们的命令,我们将能够看到每一个动画步骤都与我们的代码行相关联总的来说,这可以让孩子更容易调试自己写的程序,也可以帮助他们理解复杂的函数调用、判断和控制逻辑,比如if...else...、Loop、While、很快。Tips:虽然单步调试是一种很好的调试方式,但是我们也不应该让孩子过分依赖这个功能,因为他们每次写命令都会选择调试,以免出错,这样会减少编程时间。更重要的是,孩子会降低全局思维,而这恰恰是编程中非常重要的一种思维方式。因此,我建议仅在学习语法或复杂控制逻辑以及查找编码错误时才使用此功能。插入预置代码块:点击菜单栏的省略号图标,会弹出预置代码块的选项,包括变量赋值、函数、循环结构等,方便孩子在没有编程基础的情况下使用。一开始必须记住无聊的语法和关键字。他们只需要了解这些图标对应的代码块的功能即可。Tips:预设代码块与程序员经常使用的代码自动生成功能非常相似。只需输入几个英文单词或自定义英文缩写即可生成整个预设代码结构。未来的编程肯定会更智能,这可能是孩子们体验和熟悉使用预设代码块的一个良好开端。好了,万事俱备,下一章,我们就从最简单的“Commands(命令)”开始,一起玩转编程。【本文为专栏作家“陈义和”原创文章。如需转载请联系作者本人(微信♂:techmask】点此查看作者更多好文
