月度归档: 2021年9月

儿童编程学习的路径

这两年看了不少教育理论尤其是创新教育理念的书,其实都没啥用,因为当你想要把这些东西落地的时候,会发现它们都是虚的,都是飘在天上的。比如什么PBL,什么游戏化学习,这些甚嚣尘上的概念,最终还是要靠一个个具体的人来把它们落地,变成教育和学习的实践。从实际情况来看,并不乐观,这也是为什么这么多年教育改革都在原地瞎扯蛋的主要原因。

这两天儿子又折腾着要学python,扔了本书给他,感觉上手的还可以,今天已经开始写海龟画图了。速度比我在学校教的4-5年级孩子还快点。觉得他目前学编程的路径还算是比较靠谱,不过后面该怎么学我还没想明白,很多好玩的像telegram机器人这些国内搞起来非常麻烦。

编程,尤其是儿童编程学习,其实重点是两块:逻辑思维能力和语言表达能力。也就是把问题分析清楚,分解成基础问题(抽象和模式)的能力以及用编程语言把思路表达出来的能力。在小学和初中阶段,孩子的数学能力有限,本身编程应用场景也有限,对数学能力其实要求不高。在学习过程中还是应该以兴趣为主,能够了解基本的算法逻辑就差不多了。

从我教学的经验来看,中国学生学习代码编程最大的门槛是英文的阅读和输入,所以在儿子学编程之前,我暑假用了一个多月的时间,让他在https://www.typing.com/ 上完成了基本的键盘输入的练习,至少要知道不同字母的位置,标点符号的输入。减少输入代码时的困难。英文的拼写和阅读就没办法了,纯粹看孩子英文水平,英文好的孩子对于swift和python这样的代码,读起来是非常顺利的,写的时候,拼写错误也会大大降低。很多能力还不错的孩子,就是前期学习的时候在拼写上错误太多,一节课都输不对一行代码,挫折感太强,然后就放弃了。所以前期的技能和知识准备还是非常重要的,这也是脚手架学习理论的一种应用——可惜在课堂教学里很难应用,有兴趣教自己孩子的可以注意这些技能提前培养,或者等孩子技能发展够了再学代码。

然后说道编程技能本身,之前儿子学了点scratch,没正经教过他,就自己看那本DK出的《6岁开始学scratch》,跟着做了两个小游戏,就发现他可以自己脱离书本做自己的游戏了。我就觉得这个好像没必要继续学下去了——scratch我一直认为是一个创作工具而不是编程语言。就编程这块而言,它的学习深度和广度都很有限,三年级学生一个月到两个月(看学习时间长度和频次)就能学完,然后就是自己创作了。外面那些教scratch一教教三年的培训机构,我也是很佩服他们,能憋出这么多课时其实是很难的。

后来我就在ipad上装了swfit playgrounds让儿子作为过渡的学习内容,一个是他自己确实对这方面有兴趣,另一个就是我其实一点都不想他这么早就开始学正式的编程代码。

结果他暑假两个月,自己抱着个ipad把swfit playgrounds的学习编程1和2都学的差不多了,又开始缠着我要学python——这是看我在家备课看到的。

之前其实夸过swift playgrounds好多次了,学习的层次做的很好,代码可以直接点选不用每个字母都自己输入,在前期非常好的降低了门槛,减少了输入错误造成的挫败感(这个特别重要)。关卡式的学习,明确了每一课的知识和技能目标,比起完全自由的创作,在学习上目的性更强,效果也更好。学完前面的教程,后面会有一些主题的游戏创作,这时候因为学生已经具备了相应的知识技能,创作起来不会完全没有头绪,非常适合学生进行自学。而且我看我儿子从swift换到python,也没有什么不适应,上手就能用for循环嵌套,只需要提醒一下几个不同的语法规则就行了。在前两次学习,他在调错上花的时间远远少于我上课教的五年级的学生。

其实我对儿童编程学习的看法,基本没太大变化。首先这个绝对不是必学内容,所以要不要学,看孩子有没有兴趣,如果有兴趣,那就做好技能和知识的准备,不要贸贸然直接上,容易挫败到失去兴趣。保护孩子的学习兴趣和学习欲望永远是最重要的。

学什么语言,从目前来看我推荐从swift playgrounds到python这条路径,但是国内还有一条路径是学C++走信息学竞赛,这个最好是初中开始学,但是这条路比较难走。

对应英文好的孩子,还有一个非常好的学编程的网络资源https://groklearning.com/,上面有很多学习课程,比如这个https://groklearning.com/course/python-for-beginners/,每一课的目标和解释都非常清楚,也不用本地编译环境。就是课程是要付费的,我觉得比国内的培训班肯定靠谱。类似的还有code combat,也是非常适合孩子入门的资源,但是国内运营被网易拿去了,然后就变氪金游戏了……这两个网站都支持visa支付,海外可能方便点,我没付过费,放出来供大家参考吧。

最后,还是广告。我在在B站和youtube都上传了swift playgrounds的教学视频,不需要每一集都看,孩子学到不明白的地方,可以直接看对应关卡的视频就行了。尽量自己先做,实在做不出来再看视频。欢迎关注转发,有相关的想法问题,也非常欢迎和我讨论。

B站

Youtube

关于儿童编程的一点想法

最近因为工作关系,接触了一些做编程培训的机构,有挂着微软牌子的,有挂着大疆牌子的。总体来说,都比较差,课程体系差,教学水平也不高。正好今年我儿子自己学swift playgrounds学的还不错,我觉得还是可以聊一点我的经验。

可能我教编程不行,但是判断一个课程行不行还是有点发言权的。

先说大的分类,目前面对儿童(小学初中)阶段的编程,主要分两大类:一是scratch这种图形化积木工具,一是python,c++这种代码。

首先,scratch这种其实不能算真正的编程, 它的功能非常有局限,能够实现的逻辑结构很简单。与其说它是一个编程工具,不如说是一个适合小朋友的创作工具。稍微复杂点的逻辑结构,用scratch表现出来,几乎没有任何可读性和可调试性。可能对于三年级之前的孩子,作为培养兴趣的工具还是可以的。它的学习深度不足,课程内容让我来教的话,半年足够了,剩下来的就是重复不同的游戏换皮而已。并且,学习scratch对正式学习代码编程没有可见的好处——对于中国孩子来说,学习代码编程最大的门槛不是逻辑思维什么的,而是英文,前期90%的时间都花在和拼写错误做斗争上了。scratch显然在这点上毫无帮助。

市面上还有一堆国产的图形化编程软件,每家都有自己的课,但是有一家算一家,都是scratch换皮。技术背景强点的,换皮做的好一点,功能加的多一点。例如下面这个mind+。它其实是在scratch基础上增加很多的硬件编程的接口,适合初阶学习嵌入式,无人机什么的。

其实在国外有很多更适合作为编程入门的工具,我用过的有结合硬件编程的微软makecode平台,下面的截图是makecode的microbit编程工具界面,可以在积木、js和python之间切换

它的一个特别好的地方是,即便选择了python或者js,也不需要自己输入所有的代码,具体的命令语句是可以和积木一样拖拽的,只要填上正确的参数就行了。很大程度上缓解了英文代码输入的问题。

另一个我比较喜欢的是google出的blockly平台,功能更加强大,也更偏向算法编程这块。同样有积木和代码两种形式。前几年非常火的安卓手机编程工具app inventor就是基于blockly的。https://developers.google.com/blockly

作为一个开源的平台,blockly非常适合拿来做二次开发,在官网上有非常非常详细的资源可以使用。

最后,是我个人觉得特别适合家庭使用的swift playgrounds,详细介绍在苹果官网有,以游戏闯关的形式帮助孩子从0开始掌握基本的swift语法和一些常见的算法逻辑,数据结构。

虽然它只能运行在mac或者ipad上,但是对硬件要求不高,我家里的2018年的ipad air和2012年macbook pro乞丐版(换了固态硬盘)都能够流畅运行。

总体来说,学编程的主要门槛不在编程,在语言和数学。孩子有兴趣有能力就可以学,尤其建议自学。