
类似“编程一小时”这样的项目用一种吸引人的方式向学生介绍计算机编程。图片来源:Hour of Code 2014/Flickr, CC BY-NC-ND
澳大利亚工党领袖比尔·肖滕(Bill Shorten)最近宣布,如果当选,工党政府将会保证“澳大利亚的每所小学和中学都会开设计算机编程课程”。这一举动引起了人们对计算机编程进入中小学这一世界潮流的关注。
爱沙尼亚于2012年将编程课程引入小学教育,而在去年,英国也紧随其后。由美国主导的由类似谷歌或微软等组织赞助的活动,比如Code.org或者“编程一小时”,提倡所有中小学生都应有机会学习计算机编程。
要知道,学生在校学习编程有其好处。我们生活在一个数字化的世界,在这里,计算机程序存在于方方面面,比如说商业、市场、航空、科学和医学。在最近的一次电台演讲中,一位主持人甚至表示对他在电台的事业来说,IT背景比新闻背景更重要。
同时也有人断言说澳大利亚未来的繁荣将取决于提供先进的服务和数字技术,而这些都依赖于编程。众所周知,在很多领域计算机程序和软件都是提高生产效率的强大驱动力。
将编程介绍给学生,他们就能够更好地理解自己可以用技术做些什么。我们身处的世界到处都充满了由计算机控制的种种设备,通过理解编程,我们就能够更好地理解这些设备是如何工作的,想象并设计出新的设备与服务。
当然,不是说每个上了编程课的学生都要成为程序员或者在信息技术领域工作,毕竟,学校里的艺术课程也没有期望所有学生都成为艺术家。
拖与放
计算机程序是一种有效实现流程自动化的手段。程序会系统且稳定地遵照流程运转,并可用于穷举所有可能性。
从我们开始使用计算机起,在这70年间,用来编写计算机程序的语言一直在演化。交互界面与编程环境变得越来越自然和直观,语言的特性直接反映了它们被应用的领域的特点。
轻松表达商业流程、科学公式或者数据分析技术,跟快速开发视频游戏,所需要的语言特性,或许并不一样。
但是,在整个计算机编程语言进化的过程中,其基本原则却保持不变。计算机编程语言都需要表达以下三个基本的东西:
1.某一系列指令被执行的顺序
2.按规定次数重复执行某一系列指令的方式
3.检验某一系列指令是否被执行
虽然个人喜好会影响一个程序员选择使用的计算机语言,但关于哪种语言更适合用于教授入门编程,大家渐渐都形成了统一的看法。比如说由于简单易学,Scratch语言在小学生当中十分受欢迎;Alice语言则被用于帮助学生迅速构建计算机动画;Python语言则越来越多地应用于科学领域。而在可视化编程语言中,学生可以通过拖动摆放图标来实现编程,而不用写类型代码,这促进了简单程序的快速发展。
在斯威本科技大学,我们举行了一个研讨会向学生介绍NAO机器人的程序。学生们可以在Choregraphe环境下从一个库里面链接机器人动作。
在几天内,先前没有编程经验的学生便可以开发出有趣的机器人项目。而如果想要开发更加精细的机器人程序,学生就需要使用一门更加注重细节的语言,比如Python或者C++。先前那些简单的选项可以激发学生产生积极正面的学习体验。

可以通过轻松的编程来让NAO机器人完成一系列任务。
计算思维
编写一段程序,然后马上执行,就能给出即时反馈,让你知道你是否给计算机下达了正确的指令。毕竟最重要的是如何表达概念从而能让计算机精确而有效率地完成任务,而不是程序语言的细枝末节。
算法隐藏于所有计算机程序的深处,它以一种更抽象的方式表现一项任务是如何完成的。算法思维(algorithmic thinking)又叫做计算思维(computational thinking),它是计算机科学的基础,而近来算法思维在学校正越来越流行。
澳大利亚新的国家课程大纲规定了算法过程方面的内容,并且正在制订有关材料帮助教师开设新课程。维多利亚省最近就开发了一个名为“算法学”的VCE(澳大利亚维多利亚省的证书教育)项目。现在甚至还有教材,不需要计算机就能教你算法思维。由坎特伯雷大学的蒂姆·贝尔和他的同事们引领的“不插电的计算机科学”运动,开发了一系列有趣的运动和活动,向学生传授了计算机算法的概念。
本世纪的教育
在学校内开设计算机编程课程并不意味着提倡在教室内使用电脑。我过去不赞同,并且现在也仍然不赞同在学校内开设必修的笔记本电脑课程。
这一想法并不是为了让学生接触到技术本身,这一点在当今社会由于移动手机的入侵几乎是不可避免的。相反,学生们接触到的是开发计算机应用程序所需要的技能。
虽然关于现在IT技术人才是否短缺还是一个争议性的话题,但毫无疑问的是在大学,并没有足够多的最好的、最聪明的学生学习计算机科学。一个重要的因素就是该问题在中小学并没有取得足够的关注,而在中小学开设编程课程正是旨在解决这一问题。
有人可能会说不管在学校里教的是哪种编程语言,当学生进入工作时它都会过时。而我的经验是,如果教育得当,学生们可以迅速将一种语言的原理应用到另一种语言上去。
在19和20世纪,我们面临的挑战是理解物理世界从而驾驭力与能量,这一理解渗透到了学校的课程安排中。而在当今21世纪,我们面临的挑战则是理解并运用数据、信息和知识,而计算机编程,正是向学生介绍这些概念的必要手段。
(翻译:杨玉洁;审校:丁家琦)
原文链接:
https://theconversation.com/an-education-for-the-21st-century-means-teaching-coding-in-schools-42046









留言