本帖最后由 erp000 于 2020-11-9 13:31 编辑
引子
说说孩子编程的那点事,怎么会想到这个话题呢,是因为大学同学突然来到我所在的城市,大家坐在一起聊天时聊起了这个话题,我孩子10岁男孩,他孩子11岁女孩,他想让孩子学点编程,别整天沉迷于手机上的短视频,我们大学都学过编程,现在也都偶尔会写点代码,所以还算有点能力去教孩子,于是这个话题就这么展开了。
最近我的孩子在参加全国中小学生信息技术创新竞赛,考的是python赛项,已经过了初赛,复赛也考了,成绩还没出,希望能进决赛。
其实跟其他孩子的妈妈聊天的时候,大家都觉得男孩子学学编程挺好的,也经常有人问我这个事情,我就说说我们孩子的学习经历吧。
幼小阶段(硬件的熟悉)
几乎所有的孩子都是从乐高开始的,这个乐高太强大,快把幼儿阶段的逻辑思维给垄断了,从积木搭建开始,再到机械传动,再到ev3的小型机器人,软硬结合,既锻炼了动手能力,又锻炼了动脑能力,真的是不服不行。
对于我们这种没有经验的父母,自然大都照着这个体系顺着走下来,省事省心。
我家孩子幼儿园前是大颗粒,幼儿园时就是小颗粒,爸妈帮着组建,如果有图纸,就是孩子负责看图纸,找零件,大人帮着组装(因为他的小手力量不够,小零件不容易咬合紧密),没有图纸的话,就由着自己随便组装玩耍,这段时间主要还是锻炼了他对零件熟悉程度,知道如何交叉咬合,对整个形体的构造也基本都能了解。有时也会出个题目让他完成,比如做个手机架给妈妈用。
上一年级的时候,孩子开始接触“我的世界”这款沙盒游戏,在里面自己搭建各种建筑,也得到了一些类似的锻炼。
一年级的时候,我们给他在少年宫报名了一个乐高班,图的就是便宜,老师管的不严,孩子也比较多,有时场面比较混乱,但也算学了点知识,里面开始讲授如何用各种齿轮和关节制造机械臂,这就为以后的机器人打下了基础。
小中阶段(图形化编程)
学了一点机械知识后,我给他买了一套EV3的教育套装,由着他在家随意组装,虽然当时我也买了一些ev3的书籍,也下载了不少课程资料,但都没时间让孩子看,后来,我干脆自己设计个小题目让孩子完成,不会的,我们就一起解决。
比如说,为了让他熟悉电机,我设计了一个小场景,有一个小偷到了博物馆,他要坐电梯上二楼,电梯把他送到二楼以后,电梯又会自动地回到一楼。就这么个小场景,让他做个小电梯,拿绳子吊着,连到电机上,让主机控制电梯升降。因为有了故事情节,孩子很兴奋,编好了程序,调试了很多遍,还狗尾续貂地补足了后面的故事情节,录制了小视频,给大家讲了一个《博物馆捉贼记》的故事。
通过这样的小练习,不仅提高了孩子的学习兴趣,也让他对基本的图形化编程有了了解,于是二年级的时候,我们果断跑到三年级孩子的班上学习机器人的系统知识,学习如何利用颜色处理模块进行巡线。我们上的那个少年宫的班用的并不是EV3(报班的时候我们疏忽了,看到是机器人就报名,后来才知道不是乐高机器人),而是国产的一款机器人,居然不是图形化编程,而是c语言,这对于二、三年级的孩子,难度还是挺大的,好在我们一点一点挺过来了。
这期间我在他的平板上安装了scratchJr,大概教过他一两次,让他知道是怎么玩的,然后就再没管过,随着他自己摸索。三四年级,他们学校的信息课上开始教scratch,他已经相当熟练了。
三年级我们给他换了个班,在社会上找了个乐高机器人的教育机构,让他去学,这一年学的比较正规,也跟着这个机构参加了一些比赛,拿到了中游的奖项。这一年的图形化编程得到了很好的锻炼,scratch虽然没有正式学过,但这个机构的老师有时也会展示一些scratch作品,他很感兴趣,慢慢地自己就可以用scratch编个小游戏玩玩,这个还真没人教他。
这期间,据我观察,孩子对软件的兴趣比较大,但对硬件的处理还是有瑕疵的,所以在征询了他的意见后,我们在四年级就放弃了机器人,而改为python的学习。
中高年级阶段(python编程)
对于python编程,其实我是有私心的,对于机器人,虽然我也喜欢教给孩子(我认为这是孩子未来发展的必备知识),但是成本太高,需要不断买硬件设备,家里那些电机和传感器很快就不够用了。学软件的成本就低多了,家里怎么也都有个电脑吧。再说刚好我自己也在用python做一些数据处理的小工作,平时还是可以让他多感受感受的。
在到底是自己教,还是让孩子在机构里学习,我挣扎了很久,最后还是把孩子交给了教育机构,最主要的原因是我不知道应该从哪里教起,肯定不能跟大学生学编程那样教,上来先学二进制,再学条件语句循环语句,那孩子早就吓跑了,太枯燥了。孩子的世界是多彩的,学习也应该是五颜六色的,编程应该是一件好玩的事情,而不能是负担。
孩子在机构里学了半年,从turtle开始学起,然后是pygame,再然后以游戏为背景,学习一些语法,比如让飞机如何移动,如何循环飞入。我觉得这种教学体系很好,很符合孩子的思维方式,在学完循环语句以后,孩子已经基本可以编写一个小游戏了。
可惜的是,当孩子开始学习列表和子函数的时候,疫情来了,机构就停课了,期间,老师发了一些小题目,但是一直没学新知识,等疫情过后,老师换了,新老师几乎是从头讲起,复习了几节课后,他的思路就属于教大学生的那一套思路,很多孩子跟不上,我们在这个班里是年纪最小的一个,但是是成绩最好的那个,老师曾建议我们跟着初中孩子一起学,再然后,这个机构就倒闭了。
暑假的时候,我为了不让他忘掉python,鼓励他编个小程序,给他了几个题目后,他选择了实现《最强大脑》里面的一款“旋转拼图”的游戏,
松松散散的20天,在我的检查和解惑下,游戏完成,孩子那个得瑟,带到班上给其他小朋友玩,以弄晕别人为目的。我们拿这个作品去参加了一个市内的python比赛,但是很意外的,连最末奖也没得到。
其实,我和孩子也没在乎得不得奖,毕竟才学了半年,丢了半年,半瓶子都咣当不起来,我就为了培养孩子的兴趣,喜欢就好,有能参加的比赛就参加,没有也不强求,促进一下学习而已。
后期规划
孩子现在五年级,学业比较重,这以后,python的机构大约是不会去了,打算自己买本书教孩子,看了论坛里推荐的《跟孩子学编程》还有《父与子的编程之旅:与小卡特一起学Python》,我觉得都不错,打算买了给孩子参考一下。当然我们还是项目驱动,设计一些小项目让孩子完成,学有所用,最新的目标就是模拟场馆疏散系统。
等到初中,我就打算让孩子学C++了,只要他愿意学,并且有时间学,我就找机构找资料让他去学,如果愿意参加个信息学的竞赛也行,不想参加就算了,别给他增加负担。
总结
这么多年下来,孩子在编程这条路上也走了一段时间,我们的编程之旅基本上是顺其自然,要说经验嘛,有3条:
1. 尽量不占用平时的学习时间,周末看看视频学习一下知识,做一两道题,以巩固为主,寒假暑假则是编程的爆发期,完成一个小项目,不会的就在网上搜。要进行比赛的时候,再突击一下理论知识,做点编程题,不以竞赛为目标。
2. 遵循孩子的学习思路,适当地激发他一下兴趣,其实我家孩子也很懒,不拨拉就不动的主儿,我们主要是项目驱动,而且是编游戏为主,把一个项目进行拆解,让他一项一项地完成,然后拼成一个让他觉得不可能完成的大项目,很有成就感。
3. 快速解决疑难问题,不留bug,不堆积孩子的畏难情绪,这一点可能一般没有编程基础的家长较难做到,我家里是有我帮着答疑解惑,孩子每次都能快速通关,这样就有了学下去的动力。后面随着孩子的成长,我也就逐步放手,让他自己去解决问题。