关于少儿编程的思考

最近几年,少儿编程很火,去商场或街区转一圈,一眼看过去好多机构。编程的、机器人的、STEAM的各种概念层出不穷,引诱家长掏腰包投入。

下面引用一张知乎上的图说明机构的套路:

少儿编程的好处

那么少儿编程真的靠谱吗?我们先来看看国家教育部的声音:

2017年10月教育部关于印发《中小学综合实践活动课程指导纲要》的通知指出,发展实践创新意识和审美意识,提高创意实现能力。通过信息技术的学习实践,提高利用信息技术进行分析和解决问题的能力以及数字化产品的设计与制作能力。

下面引用百度百科-少儿编程教育中的一段话:

截至2020年2月全国已有浙江省、山东省、河南省、四川省、辽宁省、北京市、上海市等纷纷出台了支持政策。山东淄博对于少儿编程教育中比较热门的scratch编程作为小学信息技术课进行教学研讨。神奇的代码让孩子们在编程知识的星球上遨游,国家号召、社会响应、家长支持,少儿编程教育逐步走向刚需。

那么,少儿编程真正应该学到什么?我觉得有以下几点:

第一,肯定不是以语言、语法为重点,各种语言只是逻辑思维和算法的载体。

第二,编程最重要的应该是逻辑思维能力和算法思维。

第三,通过编程可以提高小孩的创作能力、动手能力、解决问题的能力(这一点,我一开始没有意识到,但是通过教儿子一年多编程后,发现这一点才是最重要的)。

对于少儿编程,好处肯定是有,但是我们也不能对这个报太高的期望。就像家长们给孩子报各种兴趣班一样,报钢琴不可能大家都成为郎朗,报画画也都成为不了毕加索,只是通过这种培训班,让孩子们多接触不同的行业、提高一点点素质,如果能产生兴趣更好,以后多一项技能,一点才艺。

编程也是,孩子们学到的什么计算机语言不重要,重要的是思维的训练和体验编程过程中的乐趣和解决问题的快乐。这个时代进步太快,我们根本无法想象二三十年后的社会会是什么样,但是这些基本的素质肯定还是最重要的。

关于少儿编程机构

对于编程机构,其实我并没有多少发言权,没有去和机构真正的交流过、调研过,下面引用一些网络上的观点:

现在流行的少儿编程是不是收智商税

里面有一些观点觉得很有值得关注的地方:

===================================================================

工程和技术,对应的是将理念变成现实的能力,里面涉及「主题式学习」、「项目式研究」和「创造性思维」的能力,确实是目前学校教育所缺乏的,但起初的创客和STEM/STEAM,基本都落在了三个字上——「做手工」。

但STEAM强调的三点内核:探究式学习(Inquiry)、对话(Dialogue)和批判性思维(Critical Thinking)很难得到体现。

各种机构的课堂教学依然是单向的,依然是对学习的创造有所期待,最终以某些极其类似的成品来满足家长花钱有成果的需求,探究、对话和批判性思维其中,又有多少体现呢?

=====================================================================

我所担心的是机构为了吸引小孩来继续上课,会用各种酷炫的界面、动画效果、单纯的按照设定好的步骤编游戏,而编程真正要关注的逻辑思维、算法思想很少能体现出来。

亲自教儿子编程的历程

作为一名特别资深的码农,新时代的农民工,思考了一圈之后决定自己在家教儿子编程。

首先,我对自己的编码水平和思维能力还是有自信的,其次,我知道少儿编程最关注的点是什么,在设置课程过程中会一直去思考、不断纠偏。

定下来自己教了之后,大概设定了从Scartch -> Python -> C++这样一个大概的路径,可以从小学一二年级开始一直教到初中。

Scartch的教学选用了下面这本书,买了书之后,先自己花一两个小时把整个书过了一遍、自己玩玩Scratch软件,大概有个数。Scratch是图形化、积木式的编程,不仅易于孩子们使用,又能寓教于乐,让孩子们获得创作中的乐趣。

前两节课基本是先把各种积木的作用大概讲一遍,先让孩子有个印象。然后结合书中的例子,像下面的两个,打地鼠和迷宫游戏,大概把逻辑讲一遍,流程图画出来,各种积木的作用结合例子就可以比较直观的讲解,孩子也更能理解。

书上的前两个例子讲解完了之后,儿子的兴趣很大,开始自己想游戏编。那我也索性抛开教材了,和他一起想,进行头脑风暴,不给他设定各种限制,让他自由的进行创作。对一个二年级的孩子来说,也设计不了太复杂的游戏,太复杂了也实现不了。过程中,我就是让孩子先想各种游戏场景和规则,然后我告诉他哪些是不太好实现的,让他改思路。就这样,一边想一边进行编程。

游戏从简单到复杂,一开始可能只是一个小动画,通过循环、事件把整个场景串起来,后期渐渐的加入各种交互操作、判断、数组、自制积木等等。

一开始基本是我编的多,过程中,我会问他应该怎么做,让他思考用什么积木实现。我也会把我思考的过程告诉他,编程前把游戏实现的流程图画出来。告诉他先定大的方向、大的流程,不要一开始就陷到每个细节怎么实现中。渐渐的我参与的越来越少,到了最后他可以在我不参与的情况下自己做一个还算有点复杂的游戏了。这时候我觉得Scratch可以毕业了。

下面是儿子做的一些游戏作品。都是我们自己想出来的一些创意,完全原创,有些作品挺幼稚,孩子做出来觉得很搞笑,做出来后自己看了会笑好半天。

确实我们做的游戏的界面不是太好,我自己也不太会PS,就是从网上找了图片简单处理了一下,有些就是自己手绘的。但是这也体现了我们学编程的真正目的是逻辑和思维,而不是把注意力放在酷炫的界面上。

猫吃恐龙:用了循环、事件、造型、声音等积木。

大猩猩生气了:

打小偷:这个有点复杂的游戏

企鹅吃鱼:

小手抓猫:

翻跟头:

古诗大赛:这是我们一起用时最多的游戏了,也是画面效果做的比较好的一个,我不会ps,用了画图+美图秀秀等几个软件,图片的处理花了很长时间。里面把小学低年级的诗都编进去了,用了数组、随机数等技术相对逻辑复杂点。一开始用了文字朗读积木,后来因为各种原因得翻墙才能用,妈妈参与一句一句的录了古诗的录音。还参加了海淀区的少儿编程大赛,得了三等奖。

垃圾分类:自我感觉这个游戏做的也不错,特别是应了北京市推行垃圾分类的景,通过游戏的方式告诉大家各种垃圾对应的分类。

死亡、隐形、还是克隆:这个作品我全程没有参与,完全是孩子自己一个人做出来的双人对战游戏,算是他的Scratch毕业作品。孩子平时比较急躁,但是在做这个作品时,遇到了各种问题,自己都能想方设法的解决,一点一点的抠细节,让我很惊喜。有些工具里面的功能,我没教过他,他自己能摸索出来使用。

整个Scratch的学习用了一年多时间,中间断断续续的,寒暑假教的多,开学了就不怎么教了。回顾整个Scratch的学习过程,儿子的创作力、想把作品做好的决心和实际行动、解决问题的能力的培养我觉得是最重要的收获。

后续的课程设计

学完了Scratch之后,就准备转入Python的学习了,Scratch是图形化的编程,属于玩具一类的,主要目的是激发兴趣和编程入门,而Python开始就是真正意义上的编程了。

目前选择了这两本书作为教材,一本是DK的《编程真好玩》,用来教Python的基本语法之类的,另一本是《写给所有人的编程思维》,用来讲一些计算机的基础知识,后面还会找一些类似的教材。

目前已经讲了两、三节课了,主要是Python的基本语法,也讲了一点二进制的原理、排序算法之类的东西。讲课的过程中会有自由发挥的地方,比如排序算法就是临时想到的,讲了冒泡排序和选择排序,拿了一堆数字实物做演示,画了流程图,并且用Python实现了。

后续准备两条线并行的教:

一条线是Python的:基本语法、绘图、文件、数据库、数据可视化、AI这些;

另一条是算法和逻辑思维的:二进制、面向对象、排序算法、汉诺塔、二分查找、线性查找、最短路径等,这条线不太好教,得用小朋友能理解的方式讲出来。

具体实施的时候把这两条线结合起来,也得和实例结合起来。不光是要实现游戏了,还可以做一些实用的工具,比如家庭记账软件、课程表之类的。比如下面这个是刚刚想到准备做的,孩子的键盘输入不怎么熟,我们一起做一个辅助输入的小程序,把Python的常用语句、关键字自动输入。一开始还是我编的多,后面渐渐的让他上手。

 等他Python熟悉了以后还准备结合树莓派这样的硬件平台做一些智能家居类的应用,和儿子说过了这个想法后,他很期待,我也很期待他能有什么好的创意。

更多推荐

少儿编程的感想与实践