每一步,与世界同步
本文作者:MILES BERRY
罗汉普顿大学计算机学科负责人及教师培训讲师,英国教育系统资深人士。
在英国新的Computing课程中,包括了计算机科学(CS)、信息技术(IT)、数学素养(DL)三方面的知识,计算机科学则是课程的核心和主线。也就是说,英国的小学生们在课堂上已经能系统地学习编程和计算机知识了。
Computing新课标的核心理念,就是为了孩子们不再只是学习如何操作电脑,而是能去深入理解计算机科学,并且培养起计算思维。
今天的文章是一位英国教育系统资深人士对这次改革的阐释,看看他们是如何把计算思维与教育融合在一起,这是有一定借鉴意义的。如果抓住计算思维作为计算机教育的核心内容之一,我想我们的计算机教育改革也决不会比他们做的差。
在我看来,小学阶段的计算思维,主要还是教会孩子从计算机的角度去看问题,也就是说,面对问题时,他们需要考虑这两点:如何让计算机帮助我解决?计算机是以什么顺序和方法解决这个问题的,我能借鉴吗?要锻炼这种思维方式,不仅是在电脑课上学编程,还要鼓励孩子多将它应用到其他学科和实际生活问题的解决当中。
那么,计算思维到底分为哪几个层次和方面?又是如何贯穿在课程教育中的呢?
用简单的话来说,算法就是用一个步骤、一个步骤的指令去完成某件事,或者规定某种情况运行的规则。一份食谱、一组舞步动作、一个话剧脚本,这些都是广义上的“算法”。教孩子“算法”,就是在教他们思考:当计算机或者孩子自己要去某件事、解决某个问题时,都需要哪些步骤?
计算机科学面临的日常挑战之一就是找到更高效的算法(即使是针对同样的问题),举个例子,将它应用到课堂中,每天上学、放学时分,时间紧张,上学时爸爸妈妈催,放学时自己在教室待不住,但要做整理书本、记录作业、理清一天的事情等等一堆琐事儿,问问孩子,怎样才能最高效地度过?
同时也可以引导孩子在使用各类APP和软件时,有意识地去感受开发者们是如何设计界面的?菜单栏放在左边还是右边?要完成某个功能需要经过哪些步骤?对于做得好的设计形式,孩子们可以吸收模仿,也可以让他们想想,有哪些功能可以更加高效地实现,以提升自己的创造力。
计算机最大的特点就是“确定性”,你给它什么代码,它就执行什么程序,你输入什么,就会得到对应的结果。因此,只要看看算法代码,孩子们就能够预测到计算机将要做什么事儿。让孩子们学会去预测代码运行效果就是一个培养逻辑能力的好方法。
在这个过程中,他们需要整合和利用已知信息,通过逻辑去推断结果。另外,当孩子们自己写程序时,代码中往往会出现很多小错误,需要不断地“debug”,进行调试。解决这些bug并不是靠运气或者偶然,靠的就是通过逻辑推断去“模拟运行”这段程序,看看程序跑到那里会出现问题。
我的老同事曾经说过一句名言,如何吃掉一只大象?一次一口!其实,开发软件也是同样的道理。不管是解决问题还是开发系统,都需要把整个大项目分成很多小部分来一一击破,这样通过调用不同的函数、算法、对象等就能使这些问题很快得到解决。
一款APP的开发,就是一个分解项目的过程
这种分解问题的方法不仅用在编程中,孩子们不管是学习什么科目,或是在日常生活中碰到什么问题,都可以用上这个“套路”,很快就能理顺问题,提高解决效率。
我们有句俗语叫“最好的计算机科学家就是最懒的计算机科学家”,他们懒在总是想要找到最快、最简便的算法来解决问题,不仅自己开发,还常常借鉴、改编别人已有的成果。
孩子们在学习一段时间的编程后也会发现,他们经常一次又一次地再写一些重复的代码块,程序员们往往把这叫做“模式”,也可以说是“通用解法”,它们就是标准代码库里每个人都能用到的那几行。
当孩子们在学习编程时,不免会学习并模仿别人写的代码,使用Scratch这样的编程入门软件让这一点变得很容易。而且,软件开发的大环境也是倾向于会开放源代码给编程爱好者们来改进测试的。孩子们会发现,编程里“模式”复制的这一套在每个学科里都很适用,不管是学语法造句还是学乐理编曲,这种认知模式可谓是文理通吃。
我认为,抽象思维是计算思维的核心。抽象思维是要让孩子们去抓取一个问题或者系统的核心或者主要架构,而不是过于纠结细节。孩子们在美术、建筑相关课程中接触到的管道示意图就是个很好的例子,它完全忽略了实地距离,只是强调了各节点的连接方式和走向。
孩子们在学习编程的时候,就需要这样抓着一条主干线,一开始可能是弄清楚自己要做什么功能,然后寻找实现的方法,至于如何表达数据,用什么硬件展示,如何提高CPU利用效率这些则都可以后续进行完善。有效的编程学习,就是这样从大的层面展开,再去调整细节,最后,孩子们将学会:既能顾全大局,又能有的放矢,粗中有细。
最后我想,毫无疑问,编程学习将成为小学教学中非常重要的一部分,孩子们从编程中学习到的计算思维模式可以辐射到各个不同学科领域。而且,学习编程还有一个很大的原因是它非常有趣,能给孩子带来成就感。无论如何,对于小学生们来说,学习代码,可能是进入计算思维最有效、最适合的方式了。