杨婷婷
一、计算思维概述
1.計算思维理念
2006年,美国卡内基·梅隆大学的周以真(Jeannette M.Wing)教授,第一次明确提出计算思维这种思维活动。她指出,计算思维是运用计算机科学的基本概念去求解问题、设计系统和理解人类行为。她倡导,将计算思维引入基础教育环节,因为计算思维目测将成为读、写、算一样的每个人必备的认知技能。
自计算思维概念提出之日就受到国内外各领域专家学者的广泛关注。近年来计算思维越来越受到重视,培养学生计算思维能力已成为教育研究者和工作者们的共识。
普通高中信息技术新课标指出,高中信息技术学科核心素养由四个核心要素组成:信息意识、计算思维、数字化学习和创新信息社会责任。新课标明确提出,要通过高中信息技术课程帮助学生加强计算思维培养:“鼓励学生在不同的问题情境中,运用计算思维形成解决问题的方案,体验信息技术行业实践者真实的工作模式和思考方式。”
2.计算思维步骤
新课标指出,计算思维是指个体运用计算机科学领域的思想方法,在形成问题解决方案的过程中产生的一系列思维活动。实现计算思维的四个步骤:第一,问题拆解:面对一个问题,需要将数据、流程或问题拆解成许多的小问题。第二,模式识别:寻找问题间的相似处、关联性、趋势或规律。第三,建立抽象化:将问题简化,忽略细节,只关注重要信息。第四,演算法:建立解决问题的流程或规则,提供一个完整的解决方案,同时能迁移到其他类似问题的解决中。
这样的思考方式除了能提升工作效率,还能减少错误的发生;也可以用在日常生活及所有复杂的问题上,这也是西方国家倾全力推广编程教育的原因。
二、编程教学定位
“人工智能时代的必备技能”“编程人未来大有可为”……目前,中小学线上线下教育中编程教育很火,这不仅有时代发展趋势的推动,还有国家政策的关注和侧重。我国包括编程教育在内的信息技术内容已纳入中小学相关课程。
1.新教材对编程教育的有力推动
编程教育属于成体系的语言教学,知识体系、语法、算法等具有一定的连续性,与应用软件的学习相比而言较为枯燥。如果没有成体系的学习会导致高错误率,从而打击学生的积极性。在以往的高中信息技术课上,教师都是以VB编程语言开展教学,但学生要想学得深入和贯通,就很难了。一是因为程序设计和算法的内容不属于高考科目的范围,学生很难认真地去学。二是因为程序设计教学内容和VB编程语言学习难度较大,在没有任何基础的情况下甚至比数学学科还难,在各高考科目的挤压下,要求高中生花很多的精力去学编程不现实,因此学生只能选择放弃。
目前,高中信息技术新教材中Python编程语言的出现,正好为师生学编程找到一条出路。Python编程语法简单,对于初学者来说很容易入门,且重视算法设计,弱化了程序语法规则,使学习者能够专注于解决问题而不是迷惑于语法结构。Python编程语言常被称为“可执行的伪代码”,有利于学生计算思维的培养。
2.当下编程教育推进的阻力
目前来讲,基于屏幕的编程学习是训练计算思维最简单、直接的一个方法。但是,当下师资的匮乏和小初阶段编程教学的空白成为了编程教育推进的两大阻力。
第一,师资匮乏问题。一是普通高中信息技术教材十几年没有大的改变,信息技术教师长期与应用软件为主体的教学打交道。随着新课标的颁布和新教材的实施,编程教学被提到了空前重要的位置,大家暂时还难以适应。很多教师自身对Python编程语言的掌握还不到位,专业水平亟待提升。所以能否解决编程教育的师资问题,成为顺利普及编程教育的一大关键因素。第二,小初阶段编程教学空白问题。这个问题,在广大乡镇的小学和初中学校尤为突出。小初阶段虽然开设了信息技术课,但是家长、学生都不重视,课时也达不到要求,编程教学自然难以为继。小初阶段编程教学的空白,导致学生的信息技术基础知识与技能十分匮乏。一旦进入高中,猛然间接触到编程概念时,学生的思维世界往往受到了极大的困扰和冲击,在学习中难以跳出固定思维模式,学习效果不佳。例如:在粤教版高一信息技术(必修1)《数据与计算》第一章“数据与信息”的学习中,不少学生对进制及转换的概念不理解,望而生畏,严重影响了他们后续学习的信心。因此,教师切忌照本宣科,否则很容易让学生产生厌学心理。
三、“智”+“趣”培养计算思维的编程教学策略
1.趣味编程问题情境的设计
第一,问题情境要有现实性。在教学中构建的问题情境,应符合高中生的生活经验。把学生经历过的生活引入问题情境,再把编程知识和技能用于日常的学习生活。利用学生熟悉或向往的素材创设情境,学起来必然亲切、实在。在Python编程语言的画图模块学习中,Turtle的命令和函数,由于数量较多,学生难以熟悉和掌握。如果教师创设问题情境:现实中如何绘制图画?把一系列的函数分类成“用什么画”“从哪里开始动笔”“怎么画”“抬起画笔”“放下画笔”“继续绘制”这种日常绘画问题,把现实问题与编程解决相联系,迁移、贯通知识,学生就好理解和应用了。恰当的编程教学情境能让学生学习更加自信。
第二,问题情境要有趣味性。创设生动有趣的情境,从而使学习者在愉悦的状态下,获得知识,陶冶情操,提高技能。其可以引导学生积极、开朗的心态,激发开放、合作、协商的行动意识,提高学生的交流、配合、获取信息的能力。
例如:在粤教版信息技术教材(必修1)《数据与计算》第四章“程序设计基础”“4.4循环的应用”这一小节的学习中,教师可以设置一个特别情境,帮助学生学习代码和算法。高中生对网络世界充满了好奇,现实生活中也会遇到实体或网络抽奖游戏。如果模仿抽奖游戏,让学生亲自创作设计一个抽奖小程序,比单纯的讲代码和算法更能有效激发兴趣,促使学生进入自主学习的编程情境中。
第三,问题情境要合法。在信息技术课教学过程中,教师也要注意引导学生形成正确的世界观、人生观和价值观。加强学生在法治意识、国家安全、民族团结、生态文明和海洋权益等方面的教育,培养良好政治素质、道德品质和健全人格。例如:在“网络抽奖”案例学习中,当程序运行成功后,可以提问学生:能否提高中奖率?引导学生发现,通过缩小随机函数指定范围,或通过在编程中“print”随机函数生成结果,可以轻而易举地“抽到大奖”。相反,如果刻意增大随机函数指定范围,抽奖几率无异于是大海捞针。让学生切身体会到通过编程控制网络抽奖结果易如反掌,从而在生活中对线上抽奖要保持谨慎态度,培养网络安全意識。
2.趣味编程教学问题的设计
在课堂活动中,学生有疑问是正常的,有利于开拓学习深度。为了促使学生将已有知识与编程设计有机结合,教师应有意识营造问题氛围,让学生产生疑问、发出疑问。“网络抽奖”情境案例在发布题目要求后,教师要引导学生重现抽奖的过程,从而引导学生找到呈现问题的特点,以及解决问题的思路。
问题1:每次猜数字的过程中,计算机程序是否重复执行了特定的步骤?这个重复执行的特定步骤是什么?问题2:每次猜到正确数字的次数是否相同?用for循环结构是否能够实现猜数字的游戏?
通过问题1让学生明白猜数字游戏的过程本质上是循环,通过问题2明确该猜数字游戏与上节课用for循环的循环算法问题不同,它的循环次数是不确定的,从而引出本节课的内容while循环。
3.趣味编程教学情境的实现
提出学习活动任务之后,教师应引导学生通过教材、网络、微课等资源开展学习,让学生熟悉数据类型、函数、条件判断、while循环等概念,用自然语言描述算法,通过流程图设计算法。在本案例中,学生在之前课程中已学习了Python编程语言的基础知识(数据类型、输入输出),掌握了顺序结构、选择结构、循环结构(for循环)的语法和简单用法,稍加提示,能够结合本课新知识(随机函数和while循环)编写出简单的程序框架,实现特定功能。
本案例中的技术重点是循环设定,给定五次机会比较键盘输入值和随机函数生成整数的大小,编写程序代码。先理解循环如何控制流转,再关注理解while语句本身的细节和for语句不一样的地方。引导学生及时运行程序进行功能测试,考察程序能否解决情境问题;编制程序运行成功后,思考程序能否改进和创新。
4.趣味编程教学情境的评价总结
对学生的行为进行总结评价,对游戏过程中遇到的问题进行分析,最终还是要回归到本节课的学习任务中,引导学生通过学习活动评价单(如表1),结合教学目标进行自评和互评,合理的培养学生的计算意识,激发学生的计算思维。这一部分也很重要,因为很多学生可能还沉浸在游戏情境中,也有学生还不知道玩过游戏之后学到了什么,所以需要教师给予点拨和总结评价。
5.趣味编程教学情境的拓展运用
通过学习,学生能否理解编程的作用和意义,是否能够主动地应用编程技术去解决实际问题?
比如,当家里需要添置一台笔记本时,学生一般都能够想到去线上商城进行搜索,逐个查价格、查评论,收集信息。教师可以鼓励学生思考,可否通过编程完成重复的数据统计工作,解放处理冗余数据的双手;能否更直观地了解某一款电脑的售后评价。教师可以引导学生用Python编程语言爬取售后评价,在此基础上进行词频分析、画词云图的方式得出结论,这种数据处理和分析是符合解题逻辑的。通过Python编程语言中的字符串、列表以及对列表的数据统计等编程实现,体现了问题拆解、抽象化、模式识别等计算思维的特征。
随着计算思维教育的不断发展及信息技术基础教育的不断普及和被重视,可以看出,计算思维能力培养的教育前景是广阔的。