打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
不插电编程课|排序算法


P

roject X 迎来第一学期的最后一次课啦!这节课我们来学习排序算法就和我们之前学过的搜索算法一样,排序也是编程中经常要做的事情;但是让六、七岁的孩子真正明白排序算法的使用、推导和优劣,特别是在不插电的环境下,应该怎么玩呢?


另外,作为本学期的最后一节课,Alex 老师想将其作为一个过渡课,将下学期将要使用的乐高教具引入其中。那么用乐高该怎么学习算法?或者说,我们应该如何用乐高学习任何一种知识呢?


这节课,我们是这么上的。


课程目标


理解选择排序法及其推导过程

★ 掌握乐高 Technic 系列零件的基本机械特性

★ 理解天平的基本原理,学会制作一架自平衡的天平

★ 锻炼团队协作能力

★ 提升计算机科学基本素养


课程工具


★ 乐高零件盒 & 乐高 Technic 系列零件

 白板 & 白板笔


课程时长

150分钟


设计思路


选择排序法是排序算法中非常基础、容易让孩子理解、同时容易动手实操的算法之一。其主要原理是每轮从数列中比较得出最小值,放到一边;不断重复操作,即可得到按顺序排列的结果。


即使只有六、七岁的孩子,也能在几乎一瞬间看出一串数字中最小的一个;但与人类不同,计算机进行“比较”的方法只能是每次两两比较,当然计算机比较的速度非常快,但它也只是非常快的做了许多次两两比较而已。具体来说,执行此种算法时,计算机的比较次数是:


1 + 2 + 3 + ...... + (n-1) = n(n-)/2 (n为数列中的数量个数)


为了模拟计算机的算法过程,让孩子每次只能选出两个数字做比较,Alex 老师选择使用天平作为比较的工具:给孩子一定数量的重物,让孩子用天平为重物做重量排序。


Learning through Play. 结合之前的教学经验,Alex 老师决定带孩子们以小组合作的形式,用乐高做一个天平,用来称量不同重量的重物,再为重物排序,实践选择排序法。当然,不同的老师完全可以按照自己的专长和现有条件,带着孩子制作不同材料的天平。


从三个重物开始,孩子们不断动手实践尝试,得出称量次数;再将重物数量不断增加,让孩子们在实践中总结称量次数,反复比较,发现其中的数学规律。


详细流水账



“这节课我们要玩乐高了!” 我向孩子们宣布。


孩子们都快要乐疯了!从第一节课就开始期待玩乐高,这节课终于用上了。


“但是这和你们平时自己随心所欲的搭建可不一样!”



平时在课间,我都会给他们一筐一筐的乐高经典系列零件,就是最常见的有凸起的砖块,让他们随便玩。而这次课上,给他们的则是一小盒一小盒的,严格分类的 Technic 系列零件。


“今天开始你们要进入到严肃的、专业的乐高搭建!每一个零件都有它的机械特性,每一个零件都要用的合理,漂亮!而且!专业的玩法就要有专业的样子!”



我所说的专业的样子,就是要有井然的秩序。在课堂上用乐高零件,最最重要的事情就是课堂纪律。如果孩子与孩子、孩子与零件之间不能很好的相处,课堂将会变成老师的噩梦。所以正式动手之前,一定要一本正经立好规矩,规矩包括但不限于:


不能争抢,有序取放零件;

★ 零件用多少,拿多少,不能贪多;

 不能把零件摊一桌子,零件要么在手上,要么在模型上,要么在盒子里;

 插拔零件有困难找老师,不能用牙咬;

 ……


立好了规矩,每个小朋友都认可了,老师就可以开始向孩子们逐一讲解重要零件的名称和主要特性了。



灰色销摩擦力小,黑色销摩擦力大;



灰色轴是奇数单位长度,黑色轴是偶数单位长度,可以用梁当尺子量出来……


(更多就不详细写了,如果读者不了解乐高 Technic 零件特性,可以看 Alex 老师的乐高课程。)


“好!了解了这些零件以后,老师要宣布任务了!我们今天要以两人小组的形式,合作做一个天平!”


合作动手的项目,一般不要超过两人,要不就会很容易发生争执,或有人闲着。


“老师什么是天平?”一个女孩儿歪着脑袋问。


一年级的孩子,真有可能不知道天平是什么,正好,我们一起学习一下天平的原理。


题外话

这个时候一定会有孩子喊:老师我知道!天平!杠杆原理!阿基米德!太简单了!


现在有很多孩子是这样子的状态。听起来感觉懂的很多,但是真的深入问他们:你用过杠杆原理吗?你能用杠杆原理解释身边发生的某种现象吗?他们就愣住了。Alex 老师曾经听一位老师说起一个概念:“百科全书里长大的孩子”,说的就是他们—— 看起来似乎知识面非常广,但是都止步在了“知道”,而并没有运用;都满足于“我看过”,而没有进一步“我干过”。哎其实成年人不也是如此,听了《得到》就以为自己长进了,其实没什么用。这也是我们实验室不断提倡“玩中学”、“动手学习”的原因:只有当他们真正在动手中,在劳动中,在玩耍中习得了道理,才会进入到前所未有的深度,才会真正习得并内化。就如同今天的天平制作。


我在白板上画一根杠杆,在杠杆中心点画一个支点,这就是一个最简易的天平。讲解一下基本原理,(杠杆原理这里也不赘述了,如果需要,麻烦读者们自行 google)就可以让孩子们动手制作了!



第一轮不给搭建参考,只提两个要求:要有一个支点;要有一根左右一样长的杠杆,还能灵活的转动。这难不倒孩子们,利用刚才介绍的灰色销,或者直接用轴,孩子们很快就能做出一个符合要求的天平。此时更需要老师关注和辅导的,是他们与伙伴合作的方法:先商量,取得一致意见再开工;两个人可以有不同分工,但都要贡献力量。



看孩子们做的差不多了,老师可以开始点评了。每个小组说说优点缺点,把最好的留在最后点评。当然,这些天平都会有一些问题:可能是没有托盘;有托盘也没有办法保持始终水平;无法维持自平衡,等等。



帮孩子指出这些改进的方向以后,老师可以(非常得瑟地😂)把参考的搭建方案拿出来了。双力臂利用平行四边形变形的原理,得以保持托盘在任何位置的竖直;在天平中心增加垂吊的重物以维持天平的自平衡。等等特性。



孩子们噢~~!噢~~~!了一阵之后,马上摩拳擦掌要去修改自己的作品,而且基本没有人想照着 Alex 老师的模型去复刻,都要搭建自己的版本。😂 挺好挺好,明白了原理,自己去创造,这不就是为师想要的嘛。😄 这时候我把我的模型摆在桌子中间比较高的位置,供孩子们随时观察参考。给他们半个小时左右的时间,让他们改进模型。



半个小时里,老师要时刻关注孩子的状态。是否有充分的合作?是否有良好的秩序?是否需要帮助?孩子做设计时,可能会碰到各种问题,老师的帮助要适度:既要充分肯定孩子的尝试,又要帮孩子指出可能的方向,推动更好的改进;既要给孩子充分的空间去探索,又要帮孩子把握好时间,尽量使他们最后有所成果;把握这个“度”很重要。



最后的结果往往会超出老师的预料,孩子们的创造力是时刻会让你惊艳的。他们不仅能做出各种各样的天平,而且还能满足老师提出的诸多要求!哈哈忒棒了!



“Alex老师,天平做好了,然后呢?”


“Alex老师我们为什么要做天平啊?”


我就喜欢这种问题。寻求意义,是能触及事物根源的思维方式,但这恰恰是学校学习时较少探究的。


那我们今天做天平是为了什么呢?我们肯定不是为了要用乐高零件去做个天平而去做。我们是要把天平当作工具,学习计算机排序算法!


”问的太好了!我们上课肯定不仅仅是为了玩乐高,也不仅仅是为了做天平。我们是要把乐高和天平做工具,学习计算机编程中的排序算法!”



为了让孩子理解计算机做排序的过程,我们可以先让孩子们想一想自己是如何给一串数字做排序的。老师先随机报出5个100以内的数字,孩子们当然会第一时间抢着说出最小的和最大的数。接着我要让他们慢下来,仔细想一想,自己是怎么找出最小数的?有的孩子会说,把5个数印在脑子里,一起看,就找出那个最小数了;嗯,这种方法好像很快,一步出结果,但是如果数字太多了,就想不过来了。有的孩子说每次脑子里就存一个数,下一个数比这个数小,就存下一个!嗯!这种方法和计算机已经很像了!



“那么计算机是怎么给数字排序的呢?其实它远没有我们小朋友聪明,计算机每次只能比较两个数!就两个!就像我们做的天平!天平的两端,一共就只能放两样东西。下面我们就用天平来模拟计算机的排序过程,我们用天平给三样东西称重,给它们的重量排个序,一个同学操作,一个同学数次数,看看我们要用几次来完成排序!”


感谢幕后英雄们

本来Alex老师邀请了Oscar,对,就是公众号头像上Alex老师怀里的宝宝,还有思雨老师靖喻老师,帮我给孩子们做称重用的砝码。我们去了清华大学 iCenter 金属加工车间,在李佼老师的指导下,用车床加工铝棒,可好玩了!不过最后时间有限,我们技艺又不精,做的砝码实在不够,所以最后没有派上用场。感谢我的幕后英雄们!😁


孩子们自己找来重物,小木块,或者乐高件,饶有兴致的称量起来。很快几个小组分裂成了两派:称两次 VS 称三次。



让孩子们说说两次和三次分别是怎么称的,想想有什么不同。啊~~!孩子们自己就发现了:如果称量顺序是A比B轻,拿出A,B又比C轻,那么很显然,两次就够了;如果A比B轻,C也比B轻,那么A和C还是要再称一次,才能确认顺序,这就是3次。所以为了统一,我们后面都把问题改成:至多需要称几次?


接着,任务升级!用天平给四个重物排序,至多需要称几次?孩子们又开始摆弄起来。虽然只加了一个重物,但是4个和3个已经有了本质区别,稍不注意,就会称乱,孩子们必须找到一个有条理的方法。两三分钟之后,孩子们基本上都得出了答案:6次!



“哇嗷!我明白了!我知道规律了!” 一个孩子忽然一脸严肃的喊起来!


听着孩子说他发现的规律,Alex老师激动的汗毛都竖起来了!这不就是为师的梦寐以求想要看到的尤里卡时刻嘛?!这不就是我们整个创造力课程所追求的顿悟时刻嘛?!天哪,天哪。你很难想象,六岁的孩子竟然可以发现这其中的数学规律!当然在 Project X 所有20多个孩子里,也就只有这么一个孩子。能遇见这样的孩子,是老师的幸运啊!



孩子说的没错,这是个等差数列求和的问题,也蕴含了递归的概念。每多加一个重物,其实都是需要拿这个重物去和其他所有重物比一次,所以是 n-1 次(n是重物个数),而剩下的重物称量次数,就和前一次的重物称量任务一样了。比如4个重物的时候,就是把多加的重物和另外3个重物一一比较,就是 4-1=3 次;而剩下的3个重物的比较,就是和前面的3个重物的称量任务一致,是3次,所以总共是6次;那么5个重物,就是 (5-1)+6=10 次;所以整个公式是:


(n-1)+(n-2)+...+2+1=n(n-1)/2


孩子当然不需要记住公式,只需要知道排序的方法、比较次数的增长规律就可以了;还有这种排序方法的名字:选择排序法


孩子通过自己动手,一步一步的称量,把选择排序算法手动执行很多遍,再从其中总结出被排序数量与排序次数的关系,而且还动手制作了天平,运用了乐高零件和杠杆原理,嗯嗯,这节课喂的饱饱的。氮素!!还没有结束!用乐高的课,最后都有一个非常重要的环节:整理零件!



所有的孩子要把自己搭建的天平拆了,把所有零件复原到上课前的状态。没有这一步,后面的乐高课质量都没法保证,孩子们也无法变成真正的乐高玩家。所有的零件都要被拆开,每一个零件都要归位;拆不动找老师,一定不能用牙咬!


拆完啦整理好啦!下课!😂



下课之后





下课了,

小 Bobby 跑过来塞给我一封信。




看的 Alex 老师老泪纵横。谢谢Bobby!谢谢孩子们!我们下学期见!




关于《不插电的编程课》

本课程是清华大学终身学习实验室《不插电的编程课》系列课程中的一节。

此系列课程面向刚刚步入小学的一年级学生,旨在用最简单的工具(摆脱电脑等复杂、昂贵的教具的限制),游戏化的学习方法,教孩子学习计算机科学知识。


特别鸣谢



本课设计过程中,得到了 TULLL研究主管、清华大学心理学系助理教授伍珍老师的大力帮助。

她在建立儿童自信心、成长型思维,培养儿童创造力方面,给出了诸多建议。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
[数学广角找次品教案]人教版找次品教案
数学广角
《空气有质量吗》教学设计
思维游戏:巧设砝码称重物(一)
高一预习微课:《如何给地球称重?》,预习提分好用!
化学老师整理:初中化学易错点(含实例分析),考前必看!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服