编程:一项培养未来人才的基本素养
2017-02-28张渝江
张渝江
学习编程不仅是为了让学生能顺利找到工作,更重要的是编程将影响21世纪世界上的每一个职业。认识到这一点的任何一个国家都将长期受益。
在美国,90%的父母希望自己的孩子学习计算机科学,因为计算机是美国经济中增长最快的和最赚钱的行业。2015年,Code.org预计,到2020年美国将有140万的计算机相关工作机会,然而只有40万计算机科学的学生。更为严峻的是,据谷歌2016年早些时候的一项调查发现,有3/4的初中和高中不提供编程课程。专家认为,学习编程不仅是为了让学生能顺利找到工作,更重要的是编程将影响21世纪世界上的每一个职业。认识到这一点的任何一个国家都将长期受益。显然,学校教育没有与社会的需求匹配,这会导致巨大的人才缺口,进而影响经济的发展。
许多教育者也认为将编程纳入课堂将有助于培养学生的计算思维。计算思维包含了数学性思维和工程性思维,而其最重要的思维模式就是抽象话语模式——是把一件事情先抽象出来,再逻辑化表达出来的能力。编程学习把计算机科学知识与创造能力相结合,能够促进学生逻辑推理能力和解决问题能力的提高。因此,一些学校开始尝试把编程与K12课程相结合,从小培养学生复杂的思考能力。世界各地许多学校已经开设了编程课程和项目,让学生通过协作设计网站、教育游戏和移动应用、新产品的建模和原型开发,来为当地实际问题设计解决方案。
《2016地平线报告(基础教育版)》中预测,在两年内更多的基础教育学校将把“编程”作为一项基本素养来培养学生。不过,很多学校即便是开始了编程教学,仍然没有取得实质性的突破。除了传统观念的束缚外,更多的是因为教学资源和师资的缺乏。
编程一小时
尽管学校还没有大规模开设编程课程来进行普及性的编程教学,民间的编程推广活动却方兴未艾。2013年,由公益组织Code.org倡导的“编程一小时”(The Hour of Code) 拉开序幕。很多美国政界和科技界领军人物以及科技大公司纷纷加入进来,或为其站台,或资助和联合开展活动。目前“编程一小时”已经发展成为一个全球性活动,有来自全球180多个国家、数以千万的学习者参加。任何人在任何地方都可以组织“编程一小时”活动。每个教学内容长1小时,充满游戏化的乐趣,有40多种语言支持,4岁以上的孩子都可参与。更重要的是,学习此课程无需编程经验,教师能快速地组织学生参与进来。
教师如何成为编程教师
教师开始编程教学并非想象的那么令人生畏。真正困难的是从程序员转变为编程老师——他们不懂教学却聘请成本昂贵。作为一个训练有素的教师,具备成为一个成功的编程教师的技能——熟悉教学和善于学习。另外,作为学校编程教师,你不必把开发一个Facebook这样复杂的任务拿来为难自己,只需要能教授基础知识即可,余下的就是激发学生的创造力了。
教师如何开始编程教学
教师可以通过以下步骤来开始编程教学。
1. 寻找在线编程教学资源
互联网上有大量的免费编程教学资源和编程工具,能满足从小学到高中的不同学段的学生学习编程的需求。比如:可汗学院的“一小时编程”有大量的课程来教会学生关于JavaScript、HTML/CSS和SQL等编程的知识和技能。Code.org上则有更丰富的“一小时编程”课程,还可以获得很多专业人士的支持。
2. 创建一对一教室环境
每位学生都有一台终端能提供良好的学习编程的环境,但并非必需。研究表明,学生在共享一台电脑并且共同工作的结对编程中学习效果最好,应当鼓励学生们结对互助。编程是计算思维和程序语言的综合运用,涉及逻辑和问题解决,而不是每时每刻都需要电脑。事实上可以有很多“不插电”活动来让学生学习这种技能。比如,利用生活中的事情来教会学生基础的计算机原理:让学生在30分钟内煮好饭。但是如果按部就班(煮粥要10分钟,洗菜切菜10分钟,炒菜要5分钟……)把这些事情一个个分开做,30分钟可能不够。这就要考虑如何排序,做到在30分钟内完成这些事——这就是“任务分配原理”。还有常见的利用“二进制卡片”来游戏化学习二进制数和比特概念等活动。
3. 信任学生
不要低估学生完成任务的能力。特别是教师也非专业程序员时,更应放开方向盘,让学生成为司机。因此,教师应大胆把计算机科学课程开始运转起来,你就会不断得到学生能做得更好的反馈。
4. 不要一个人战斗
当你开始编程教学后,尽量多找志同道合之士来帮忙。互联网上有丰富的智力资源供教师使用,这样你可以更快地回应学生的问题。你还可以联系家长,看有没有编程高手愿意帮忙,甚至进入教室辅助你的教学。分享是爱好编程人士的特质之一,所以你不必担心自己是一个人在战斗。
5. 使编程有趣
编程常常被认为是枯燥乏味的。因此,选择合適的课程资源,让孩子感受到进步和成长,这是让学习有趣最有力的支撑。现在有很多编程工具都非常有趣,在教师较少的干预下引导学生通过一系列游戏化的谜题和任务来学习计算思维。
编程软件工具推荐
1. 适合 6岁以上学生
Tynker——这个APP工具使用代码块创建程序。小孩子也能轻松创建自己的应用程序。比如:它让学生写互动故事,设定英雄和恶棍来构建复杂的角色扮演游戏。他们甚至还可以创建自己的Minecraft(我的世界)修改器。你可以下载这个APP的教师版,其中包括计划工具和培训视频帮助你支持学生探索。
2. 适合8岁以上学生
Scratch——这是目前全球流行最广的视觉化的免费编程游戏软件,由麻省理工学院开发和支持,有下载版和网页版可供使用。对于初学者来说,无需记住命令,仅需移动彩色模块且集中注意力来创新完成任务;还可以控制传感器板来制作好玩的机器人玩具。该工具还内置丰富的“一小时编程”课程,学校可快速地引入到课堂中。
MIT APP Inventor——与Tynker相似,这个APP仍使用视觉化模块来教编程的概念和过程。不过不再是简单的在游戏中玩耍,而是去完成一个真正的开发项目。通常在学习一小时后,学生就可以创建一个简单的APP。MIT APP Inventor也帮助学生从这些简单快捷项目摆脱出来,建立更大的项目。官网设有论坛,教师和学生们可以在其中寻求帮助,以及找到老师工具和项目的想法。该APP还包含了乐高MINDSTORMS组件,学生可以用编程控制乐高机器人。
3. 适合10岁以上学生
Encode——这个只支持Android系统的APP可以让学生随时随地参加编程课程。即便学生不联网也可以学习编程。
Encode仅聚焦于JavaScript编程,以教会学生编写复杂的网页应用程序和游戏的能力。它还提供了基于文本的编程基础训练,可以使学生学会更高级的编程语言。 能够创建自己的游戏,也能帮助他们将教育游戏化,通过创建工具来教年轻的学生。
4. 适合11岁以上学生
Codecademy——通过一套课程计划、学生追踪工具和教师培训来提供一个坚实的计算机科学课程。本课程包括HTML、CSS、JavaScript jQuery、PHP和Ruby等语言的学习,以及建设一个交互式网站的教学内容。
5. 适合13岁以上学生
GoLearningBus专业版——这个APP包括的教程涉及Ruby on Rails、HTML5、Java、PHP、 C、 C++、COBOL、SQL等,一站式为学生提供更广泛的编程学习知识。其中,各种各样的训练能让学生获得真实世界的技能以帮助他们进入大学学习计算机科学或开始一份计算机相关的职业。
编程与硬件结合
编程的过程充满乐趣。如果学生有一个想法,马上就可以通过编程来实现,并且可以立即看到效果。这种即时的反馈,会让学习兴趣变得越来越浓厚,也越來越有信心。更进一步,如果这种效果不局限在屏幕中而能转变为立体的产品,在用于改善生活品质、促进生产等方面带来价值,那就更棒了。这就需要把编程与硬件结合。下面介绍一些常见的可编程驱动的基础硬件。
Raspberry Pi(树莓派)——最廉价的电脑。树莓派接上显示器和键盘鼠标等输入设备可用作编程的终端电脑。如果与其他感应套件和动力装置结合,也可以用来被编好的程序所驱动,成为智能机器的核心部分。编程部分较难,建议水平较高的学生使用。
Hummingbird Robotics Kit(蜂鸟机器人套件)——Arduino套件。组织和编程驱动Arduino为核心的智能机器更容易。编程部分简单,适合中等水平学生使用。
乐高机器人——学生喜欢的玩具,新的NXT套件有很酷的机器人,可以编程。硬件拼合组装比前面两种套件更容易,编程也简单,适合初级水平学生使用。
“编程一小时”中文网站资源推荐给国内教师,请扫二维码。