黄小敏
[摘 要]计算思维是信息科技课程所要培养的核心素养之一,也是高中信息技术学科核心素养之一,同时也是中学信息技术教育教学研究的热点课题之一。Python程序设计是广州市初中信息技术必修课,在计算思维引领下的Python程序设计教学,能激发学生的学习兴趣,训练学生分解、抽象、算法设计、建模等多方面的思维能力。文章结合初中Python程序设计教学的现状,探索基于计算思维的初中Python程序设计教学的一般流程与方法,以培养学生的计算思维与提高学生的学习效率。
[关键词]计算思维;初中;Python程序设计
[中图分类号] G633.67 [文献标识码] A [文章编号] 1674-6058(2023)02-0095-04
2018年初,教育部发布《普通高中信息技术课程标准(2017 年版)》,将计算思维定为高中信息技术学科核心素养之一,要求高中信息技术课程教学着重培养学生的计算思维。《义务教育信息科技课程标准(2022年版)》也指出,计算思维是信息科技课程所要培养的核心素养之一。对此,初中信息技术教学也应注重培养学生的计算思维。初中阶段是学生抽象逻辑思维快速发展的重要阶段,而计算思维是一种集合多种思维的综合性思维,它可以促进学生抽象逻辑思维、辩证思维的发展。因此,培养初中生的计算思维非常重要且必要。
一、初中Python程序设计教学的现状
程序设计不仅是培养学生计算思维的理想平台,而且是培养学生计算思维的最佳切入点与途径。近年来,Python教学迅速兴起,山东、四川、浙江等地早已把Python纳入初中信息技术课程体系。2021年,广州市也将Python纳入初中信息技术教材。面对新教材,教师在教学过程中总会有一些困惑与疑问。下面笔者结合教材内容和自身的教学实践,分析本校学生学习Python程序设计和教师教学Python程序设计的现状。
学生层面:我校位于城乡接合部,大部分学生来自农村以及来穗务工家庭,他们没有Python程序设计基础,信息技术知识与技能基础薄弱。一方面,学生普遍认为Python 程序设计内容深奥,难以理解与掌握,只是机械地模仿教师的程序代码,未能深刻理解程序设计语言,出现畏难心理。另一方面,由于信息技术并不是中考科目,一些学生不重视信息技术的学习,学习态度也不够端正,因而学习效果并不理想。
教师层面:Python刚进入初中信息技术教材,相关教学参考资料不够丰富,课堂同步教学资源较少,这就需要教师花大量的时间和精力来收集教学素材与教学资源。信息技术教材将VB语言改为Python语言,但教师还是沿用VB语言的思维习惯来组织教学,这不利于体现 Python 语言的独特优势。传统的程序设计教学以讲练结合为主,即教师把知识点讲清楚,然后让学生进行相关练习。这种教学方法忽视了对学生计算思维的培养,使得学生对Python程序设计理解不深刻,导致有的学生只是简单地模仿,未能达到运用程序去解决问题的要求。
根据本校学生Python程序设计学习以及教师Python程序设计教学的现状,笔者积极研究与探索基于计算思维的Python程序设计教学方法,旨在培养学生的计算思维和提高学生的学习效率,促进学生信息技术学科核心素养不断发展。
二、基于计算思维的初中Python程序设计教学实践
在初中Python程序设计教学中,教师不能枯燥地讲解算法、程序设计语言格式以及其他知识点,更不能让学生只停留在模仿教师的操作上,应当把各个知识点融入具体的生活案例当中,让学生通过分析实例、抽象模型、编写代码、调试与解决问题等一系列活动,体验一个完整的程序的设计过程,掌握运用程序解决问题的方法,从而培养学生的思维能力。下面笔者立足于自身的教学实践,谈谈如何基于计算思维有效开展初中Python程序设计教学。
(一)展示生活案例,引导学生分析问题,培养学生的分解思维能力
广州初中信息技术新教材中有许多生活案例,比如“分支结构”中的苹果打折、阶梯电价、平年闰年、停车场收费等案例。这类生活案例能够激发学生的学习兴趣,同时让学生明白程序设计与生活密切相关,且能够解决生活中各种各样的问题。当然,信息技术教材中也并非所有内容都是与生活相关的,如《Python编程基础》教材就注重知识点讲解,内容较为枯燥,对此笔者利用学生熟悉的主题内容“我的校园”去贯穿课堂教学。如笔者通过“我的校园”来引导学生学习赋值语句,再通过 “介绍我们班”“统计班级人数变化”等任务引导学生理解和应用赋值语句。而对于输入语句input( ),笔者则通过 “班级表彰”的活动来引导学生学习。最后是赋值语句与输入语句的综合应用,把课本练习“求长方形的面积”改为“求学校教室的面积”“求学校圆形花坛的面积”,让学生去分析、去探索、去学习。这样,利用生活案例,让原来枯燥的教学内容变得富有趣味,且让学生了解到程序设计既来源于生活,又为生活服务,从而大大激发学生的学习兴趣。
生活案例能激发学生的学习兴趣与热情,可生活案例中的情景却是较为烦琐、复杂的,因此需要引导学生对生活案例进行分析与分解。分解是计算思维的组成部分之一,一般是指将一个复杂的问题分解为更小、更简单的几个问题。面对复杂的问题,学生要对它进行分析,将它化繁为简。学生在分析与分解问题的过程中初步形成了分解思维。
首先针对我校学生信息技术知识与技能基础薄弱的情況,笔者设计了相关习题,引导学生分析与分解问题,培养学生的分解思维。比如学生做有关阶梯电价的课后习题时无从下手,对此笔者引导学生用数学的分段函数来分解问题:(1)计算用电200度以内的电费;(2)计算用电200~500度的电费;(3)计算用电500度以上的电费。学生能较好地理解用电200度以内的电费,可是求解用电200~500度以及用电500度以上的电费时却无从下手了。对此,笔者引导学生再次分解,用电200~500度的电费分解为用电200度的电费和用电超过200度的电费。同理,用电500度以上的电费则可分解为用电200度的电费、用电200~500度的电费和用电超过500度的电费。学生用自然语言分析与分解完题目后,便很容易得出表达式,再通过教师引导,学生基本能理解阶梯电价的求解过程。学生把实际问题分解成几个可操作的步骤,初步算式已经在脑海中形成,提高了分解思维能力。
(二)利用流程图,厘清学生的抽象思维
抽象与建模思维是计算思维的重要组成部分。抽象是指从众多的事物中提取出共同的、本质的特征。在广州初中信息技术新教材中程序设计的开篇第一课便讲到了流程图以及fChart流程图直译器,目的在于辅助学生理解算法,体验程序执行过程。在学生分解探讨上述的阶梯电价问题后,教师可引导学生使用fChart流程图直译器完善“阶梯电价”流程图(如图1)。学生完善流程图的过程,是学生用科学的概括性的符号来表示现实问题的求解步骤的过程,也是建立抽象思维的过程。通过利用流程图,学生厘清了算法,提升了抽象思维能力。学生完善流程图后,还可以用fChart流程图直译器来执行流程图,观察其执行过程与结果,厘清抽象思维。
(三)突出核心算法,体验程序设计方法,训练算法设计思维
算法是指解决问题的步骤和方法。算法设计是计算思维的核心部分之一,也是初中Python程序设计教学中最为关键与重要的环节,初中阶段的Python程序设计教学应以算法为核心。在上一步骤中,学生已经通过流程图厘清了算法。可是,对我校学生而言,提炼算法形成程序代码难度依然很大,有的学生会在程序语句表达中出错,有的学生未能完全理解算法。因此,在程序设计的过程中,教师需要提供程序设计半成品,只让学生对程序的核心部分进行加工,同时结合流程图进行思考。大部分学生都能学会程序设计的方法,体验算法思想。在“阶梯电价”案例中,教师给出了程序设计半成品(如图2),学生只需要集中精力完成if...elif...else条件句结构程序设计即可。这样,既能突出重点条件句程序设计结构,降低程序设计学习难度,又能达到训练算法设计思维的目的。
(四)自主调试与小组纠错相结合,巩固计算思维
调试是程序设计中的一个重要环节,贯穿于程序设计的各个过程。学生从设计程序开始,就需要不断地进行调试。学生在调试程序的过程中进行分析与分解、抽象与建模,然而并不是每名学生都能如愿调试出正确的程序结果。对部分计算思维能力较弱的学生而言,他们的程序设计可能错漏百出,有的学生中英文标点符号出错,有的学生忘记缩进,有的学生不能理解程序代码,而当这部分学生不能独立调试出程序时,他们的学习积极性就会下降。因此,在学生独立调试后,教師可采用小组纠错的方式,给计算思维能力较弱的学生提供支持与帮助,提高他们的课堂练习参与度,增强他们学习程序设计的自信心,而计算思维能力强的学生则可通过教授与帮助他人,再次巩固自己的计算思维。
(五)归纳拓展,迁移思维
在初中Python程序设计教学中,教师除了要让学生梳理与回顾所学的知识,还要让学生通过类比等方式将一个问题的解决方法拓展、迁移应用到同类型的问题中。学生在归纳知识与完成拓展任务的过程中,需再次经历分解、抽象、算法设计等思维训练,从而提升了计算思维能力。在“分支结构”的学习中,学生完成阶梯电价的求解后,教师引导学生继续按照上述流程与方法,自主探究与小组合作设计“平年闰年”程序、停车场收费程序等,引导学生学会综合应用与思维迁移。由浅入深、螺旋式上升的学习拓展活动,能让学生逐步迁移思维。
三、基于计算思维的初中Python程序设计教学实践效果
为了验证基于计算思维的初中Python程序设计教学的有效性,笔者通过易学系统对教学过程和结果进行了分析。其中3班、4班为实验组,采用的是基于计算思维的程序设计教学方法;1班、2班为对照组,采用的是“讲练结合”教学方法。笔者一共做了两次分析,第一次分析是在“二选一、多选一结构”教学中的即时反馈,本次检测内容以课本例题以及课后习题为主。第二次分析是在完成了“分支结构”教学后的一个星期,再次对学生分支结构知识的掌握情况进行评价,本次检测内容与第一次大致相同,只做了简单的变式。
实验数据显示第一次检测实验组与对照组差异不大(如图3),学习效果也相当,正确率高达90%。使用同类型题目进行第二次检测,实验组与对照组的数据出现明显差异(如图4),实验组正确率在80%以上,而对照组正确率却低于70%。
通过两次检测数据可以看出,传统的“讲练结合”教学方法与基于计算思维的程序设计教学方法在课堂即时反馈中都取得较好的效果,原因是在当堂的教学过程中学生能通过模仿教师的程序范例,较好地完成练习(这其中包括完全能理解与应用该知识的学生,也包括只会简单模仿教师的程序范例的学生)。而在第二次检测中,我们发现两组学生的答题正确率都有所下降,但对照组学生的答题正确率出现较大幅度的下降,实验组学生的答题正确率下降的幅度较小。分析其原因有两个:第一,学生对知识存在遗忘;第二,学生对知识的掌握不够扎实。实验组的学生对知识掌握得较好,大多能理解并运用程序去解决问题,知识遗忘率也较低。于是,在脱离课堂范例的情况下,依然能应用知识去解决同类问题。而采用传统的“讲练结合”教学方法,学生的知识掌握不够扎实,有部分学生只会模仿程序,不理解程序,更不会运用程序去解决问题,知识遗忘率较高。综合两次检测的数据,笔者发现基于计算思维的程序设计教学方法比“讲练结合”教学方法更好。
四、小结与展望
对初中生来说,程序设计是相对较为复杂且枯燥的内容,计算思维的引领能让学生的程序设计思路清晰,并透彻理解知识。因此,笔者在探索课程标准与计算思维理论的基础上提出了初中Python程序设计教学的一般流程与方法,该流程与方法的应用对学生计算思维的培养起着积极的促进作用。首先,学生分析与分解问题的思维能力得到了提升。通过对生活案例的分析,学生了解到程序设计与生活密切相关,能够自主发现问题、分析分解问题,初步形成分解思维。其次,学生抽象思维能力有一定的提高,学生学会抓住问题核心,化繁为简并且厘清思维,提升抽象思维能力。再次,学生的算法设计思维能力得到了提升。在算法提炼与程序设计过程中训练了计算思维,在调试纠错与归纳拓展过程中巩固了计算思维。最后,学生学习程序设计的态度发生了改变,过去学生对程序设计的态度是“害怕”“不理解”“机械模仿”,而在计算思维的引领下,学生对程序设计有了更为深刻的认识,能够灵活运用程序解决生活中的问题,对程序设计也产生了浓厚的学习兴趣,能积极参与课堂活动,提高学习效率。然而,由于Python刚纳入广州市初中信息技术教材,关于计算思维在初中Python程序设计中的培养方法的研究还需要在实践中不断总结、不断思考、不断探索,只有这样,才能形成适合本校学生并具有区域推广意义的教学方法。
[ 参 考 文 献 ]
[1] WING J M. Computational thinking[J].Communication of the ACM,2006(3):33-35.
[2] 中华人民共和国教育部.教育部关于印发《普通高中课程方案和语文等学科课程标准(2017年版)》的通知[EB/OL].(2017-12-29)[2018-01-20].http://www.moe.gov.cn/srcsite/A26/s8001/201801/t20180115_324647.html.
[3] 段青.《基础教育信息技术课程标准(2012版)》义务教育阶段基础模块内容标准解读[J].中国电化教育, 2012(10):28-32.
(责任编辑 黄春香)