新课标视域下基于算法思维的初中Python教学实践探索
2023-06-07赵剑晓
赵剑晓
摘要:2022年4月《义务教育信息科技课程标准(2022年版)》发布,提出将“算法”作为信息科技课程的六条逻辑主线之一。所谓算法本质上是一种问题解决的思维模式。本文以算法思维解决问题的思维模式为基础,建构出基于算法思维的初中Python教学模式,并以“猜数游戏”为例展开具体教学实践,得出了在初中Python教学中要关注思维过程而非知识技能,要关注问题解决方法而非结果。
关键词:信息科技课程标准;计算思维;算法思维;Python教学
中图分类号:G434 文献标识码:A 论文编号:1674-2117(2023)11-0044-04
《义务教育信息科技课程标准(2022年版)》(以下简称“新课标”)明确了义务教育阶段信息科技课程的六条逻辑主线,分别是数据、算法、网络、信息处理、信息安全以及人工智能。新课标同时提出信息科技课程的四大核心素养,其中,培养计算思维的本质是培养学生抽象、分解、建模以及算法等一系列思维活动。[1]可以说,“算法”是新版义务教育课程标准中的一个关键词。王荣良教授认为,算法本质上是能将一个问题分解成小问题并简化解决问题的一种思维方式。[2]所以,在一定程度上可以认为算法思维是一种问题求解思维,而对序列、分解、转换、条件、循环等计算机基本概念的学习是算法思维以及问题解决能力培养的基础环节。[3]因此,算法思维是值得教师在教学中借鉴的一种思维模式,通过对情境的创建,使学生能从全局上对问题情境进行预设,挖掘问题的本质和逻辑,分解算法从而分步解决问题,以此来提高学生的思维能力和问题解决能力,最终促进学生计算思维等核心素养的培养。
模式构建
新课标提出让学生初步具备解决问题的能力,发展计算思维。可见,在目前的信息科技教学中,让学生学习程序设计的主要目的是培养其思维。算法思维是计算思维的一个重要组成部分,其本质上是一个分步求解问题的思维。因此,结合算法思维的思维模式,综合本节课教学特点,笔者构建了适合初中Python教学的教学模式(如下页图1)。此模式从教师活动、教学流程以及学生活动三个维度互相对照展示了基于算法思维的初中Python教学模式。通过“创设情境、提出问题;分解问题、逐一突破;可视化表征、梳理问题;自主学习、解决问题”这一系列环节,最终指向学生的思维培养与问题解决能力的提升。
教学实践
本次教学实践以“猜数游戏”为总任务,让学生通过编写“猜数游戏”的程序代码,掌握while循环的使用,同时掌握while循环嵌套选择结构。借助算法思维解决问题的相关思维模式,引导学生循序渐进地解决每一个小任务,最终完成达成目标。通过这些环节,培养学生的信息科技核心素养,让学生自主探究学习,运用合理的编程算法编写程序,体验程序设计流程,感受算法的效率,掌握程序调试和运行的方法,提升计算思维水平。同时,善于借助学习平台完成探究,体验数字化学习过程,适应数字化学习环境,养成数字化学习能力。
1.创设真实情境,体验问题
教学中的情境往往是由教师依据具体的教学内容,结合具体的现实教学条件设计的,具有真实性。创设情境往往伴随问题,教师从具体情境出发,以教学内容为基础,让学生根据具体情境来解决某些问题。[4]
课堂伊始,笔者选择一位学生作为游戏主持人,主持人心里想1~20之间的一个数(整数),玩家(学生)猜测主持人心里想的数字,主持人只需要回答比心里想的数大了还是小了(让学生沉浸游戏,真实体验猜数游戏)。学生猜测几轮,猜中正确答案的得到奖励。在游戏结束后,教师引导学生尝试用5句话来总结猜数游戏步骤并精炼语句(如图2),同时引出课题:用Python来玩猜数游戏。
利用真实游戏场景让学生有兴趣地进入教学主题“猜数游戏”,并且引导学生分解“猜数游戏”,使学生建立分解意识与思维,让学生在接下来的环节中可以自主自觉使用分解思維来分析问题与解决问题。
2.结构化分解,简化问题
算法是Python教学中必不可少的内容,但在Python教学中,大多数教师更加关注学生对不同算法的知识技能的掌握,而对算法思维的培养有所欠缺。[5]利用算法思维解决问题,第一步是分解问题,即将问题按算法进行结构化分解,具体来说就是面对一个复杂问题,将其分解为可以逐个解决的子问题,这些子问题互相具有一定的联系,解决上一个子问题是下一个子问题解决的必要条件,但是它们又彼此独立。分解问题使得问题简单化。
学生通过体验猜数游戏各环节,基本都可以用5个步骤总结猜数游戏的具体过程。要将现实中猜数游戏与Python编程进行联结,还需要指导学生完成与5个步骤对应的Python编程步骤,实现从现实游戏向Python编程的过渡,并且将利用Python编写猜数游戏这一个问题分解成5个编程子问题,逐一解决。在具体教学实践过程中,笔者要求学生登录易加学院自主学习平台,完成两个猜数游戏的对照填空,总结出Python编写猜数游戏的5个步骤。
让学生将“1.玩家猜数”
“2.if…else选择结构判断大小”
“3.Python随机产生一个数”
“4.若不一致,则重复B和C两个步骤”
“5.while循环语句”这五句话序号对应填写在上表中。
通过平台的数据反馈,笔者发现大部分学生的答题正确率仅为60%(如图3),大部分学生对Python猜数游戏编写过程中是先用while循环还是先用if…else选择结构不清楚。针对此问题,如果用上表来讲解,可能大部分学生能理解,但这其实是教师在解决问题。而信息技术课堂要体现学生的主体地位,教师只应是主导者,负责给学生提供问题解决的脚手架。所以,笔者没有给学生讲解错误的问题,而是让学生带着错误问题完成下面一个任务:绘制猜数游戏的流程图。这样做旨在让学生通过对流程图的绘制来完成逻辑梳理,从而理解到底是先用while循环,还是先用if选择结构。
3.可视化表征,梳理问题
知识可视化就是用图解手段来构建和传递复杂知识。可视化表征包括利用流程图、思维导图等辅助手段,帮助学生将Python编程过程中隐形的思维过程呈现出来,对思维加工过程进行理解和认知。[3]Python编程教学的大部分内容可以借助流程图的绘制来帮助学生梳理逻辑。但如果让学生从无到有绘制流程图一方面会浪费大量的教学时间,另一方面可能会让学生无从下手从而产生畏难情绪。对Python猜数游戏的流程图绘制,可给学生提供绘制了一半流程图的学案(如图4),让学生将合适的语句填写到流程图中对应的空格内,从而帮助学生梳理逻辑。
在学生梳理逻辑后,教师引导其回到上一个结构分解环节,解决while循环和if选择结构的前后问题,并对本次教学内容的难点以及while循环的重点进行突破,为接下来的Python编程做铺垫。在突破教学重难点的过程中,在学生思考m和n相等还是不等这一循环问题时,笔者借助图4所示的循环图让学生直观感受。在可视化状态下,学生可以理解图4右边的部分循环,就此可以引导学生理解循环是在m和n不相等的时候才发生的,因为while循环是满足条件时才执行循环的。至此,上一个环节中未解决的问题——到底是先用while循环还是先用if选择结构,得以解决。
4.自主探究,解决问题
在前两个环节中,学生将猜数游戏的大任务已经分解成一個个的小任务并且利用流程图进行了逻辑梳理。在具体的编程实践中,笔者在易加学院自主学习平台中准备random模块导入的资料和半成品程序以及注释学案,供学生自主学习,帮助学生完成程序的编写。学生自主探究random模块的导入,并展示与讲解自己的导入结果,同时根据教师提供的学案,完成Python猜数游戏的程序代码编写。最后,让进度快的学生展示自己的程序代码,并测试与讲解,教师根据学生的编程结果进行总结与错误反馈。
5.完善算法,拓展问题
算法思维虽然具有一定的程序性,但却不是单一的思维,而是具有创造性的。因此,笔者采用了分层教学,要求学生思考两个问题:
①在猜数游戏中为何要用while循环不用for循环;②在导入环节的游戏中猜了几轮猜到了正确答案?如果想让Python输出猜中了几次,应该如何操作?第一个问题几乎所有学生都可以思考得出答案,因为猜数游戏并不能提前知道具体可以猜中几次,因此选择while循环,而不是for(计数)循环。第二个问题则是让部分完成度较快较好的学生能进一步思考与完善算法。
实践反思
1.关注思维过程,而非知识技能
新课标提出需要学生了解算法在问题解决过程中的作用,领会算法价值。何为算法的价值?在大部分Python教学常态化课堂上,多数教师对于if选择结构、while循环的教学是先讲解这些算法是什么,然后利用习题帮助学生理解。因此,这些算法的学习对于学生而言并不是一种思维模式的训练,而是一种知识技能学习。而新课标关注的是对学生思维的培养,因此,教师应通过对各种算法的讲授,将算法知识与其他知识体系进行联结,让学生可以根据实际情况选择算法、描述算法、执行算法,从而最终获得解决问题的策略或方法。
2.关注问题解决方法,而非结果
熊璋教授说,信息科技课程不应该局限于让学生对现有程序设计语言的掌握,而应让学生学习使用计算机解决问题的思维和实践方法。[6]因此,对于程序设计语言课程的教学,更应该关注在教学过程中学生是否掌握了具体的问题解决方法。在教学设计过程中,教师应将课堂交给学生,借助各类脚手架,如现实问题与计算机问题对照、问题分解、可视化表征问题等,帮助学生解决问题,教师更多的是教授学生解决问题的方法,而不是关注学生是否掌握了该语言的某些语法规则等。
参考文献:
[1]中华人民共和国教育部.义务教育信息科技课程标准(2022年版)[S].北京:北京师范大学出版社,2022.
[2]王荣良.信息技术课程中算法学习的价值探索[J].中国电化教育,2008(08):79-86.
[3]孙立会.聚焦思维素养的儿童编程教育:概念、理路与目标[J].中国电化教育,2019,390(07):22-30.
[4]黄淑燕.指向信息技术学科核心素养的情境题设计[J].中小学数字化教学,2021,39(03):58-61.
[5]李晓晓,谢忠新.指向算法思维培养的学习支架设计策略[J].中国信息技术教育,2022,384(09):33-36.
[6]熊璋,赵健,陆海丰,等.义务教育阶段信息科技课程的时代性与科学性——《义务教育信息科技课程标准(2022年版)》解读[J].教师教育学报,2022,52(04):63-69.