基于python环境的一题多“解”提升智能计算思维

(整期优先)网络出版时间:2023-04-19
/ 2

基于python环境的一题多“解”提升智能计算思维

 倪玉群

杭州市富阳区实验中学  浙江 杭州  311400

【内容摘要】智能计算思维是一种问题解决过程,它强调用有助于求解的计算机等工具表述问题;而算法和程序设计恰恰是计算机表述和求解问题的主要方法,也是普高信息技术教学中的重点和难点。如何有效突破编程教学中的重难点问题,是我们一直探索与研究的课题。笔者结合学生实际,设计贴近生活的教学情景,从解决问题方法的多样性、程序语言表达方式的多样性,数据结构的多样性以及相同数据结构处理方法的多样性出发,通过一题多解的形式,有效开展算法与程序设计教学,提升学生全面思考和解决问题的能力,进而实现智能计算思维的提升。

【关键词】:智能计算思维;多样性;一题多解

智能计算思维被认为是一种运用计算机科学基本概念解决问题,设计系统以及理解人类行为的方式方法。它不是计算机专家独享的思维,而是21新世纪每个公民都应该具有的应用技能和态度,要像算术、阅读、写作一样普及,而这种普及与信息技术的应用是密不可分的。计算思维是在形成问题解决方案过程中,运用计算机科学领域的思想方法产生的一系列思维活动。而算法和程序设计恰恰是计算机描述和求解问题的主要方法,笔者结合学生实际,设计贴近生活的教学情景,从解决问题方法的多样性、程序语言表达方式的多样性,数据结构的多样性以及相同数据结构处理方法的多样性出发,通过一题多解的形式,有效开展信息技术算法与程序设计教学,提升学生全面思考解决问题的能力,进而实现智能计算思维的提升。

一、选择一题多解的缘由

1.基于教材,内容浅散,不利于能力提升

教学内容安排浅散,教材中关于python语言的有些函数的用法不够详尽,应用举例又过于浅表化,不利于学生对知识点的真正理解。知识点的逐个介绍,以及配套应用举例的单一运用,割裂了知识点的内在联系,造成知识点的离散,这就需要我们设计合理的案例来组织串联知识点,并通过一题多解让学生从整体上系统地掌握知识的纵横内在联系,提升学生综合运用学科知识和学科方法解决问题的能力。

2.基于教法,方法单一,不利于本质探究

按照教材按部就班的教学导致教师在设计问题情境时解法的单一,其实学生在学完必修1《数据与计算》中python的基础知识和基本句型后,就具备了运用python描述问题的基本方法,而选择性必修1《数据与数据结构》更注重学科思想和学科方法,但是几种数据结构都是在用列表模拟的基础上讲解代码实现过程的。于是学生就有了疑惑,既然可以用列表实现,为什么还要学数组、链表呢?这就需要我们引导学生从数据结构的本质上去探究解决问题的过程和方法,通过不同数据结构实现相同功能的过程去寻找到它们之间的联系和区别,达到举一反三,提升解决问题巧力的目的。

二、一题多解的教学设计

教材知识点的浅散,需要我们设计合理的教学情境组织串联起来,笔者首先结合教材,联系学生生活经验,创设符合学生生活实际的教学情境来组织教学,通过熟悉的生活情境激发学生的学习兴趣,引导学生运用已有的生活经验联想出多种不同的解决方案,不但可以培养学生的发散思维,而且提升了学生思维的灵活度和创造性。本文笔者以教材选择性必修1《数据与数据结构》中2.1数组的教学为例展开,结合书本中基于数组的车牌摇号系统功能实现创设了以下情境:

英语课互动很多,英语老师课堂上要问很多问题,可是她不能叫出班上所有同学的姓名,只好采用one-by-one轮流提问或叫熟悉名字的方法,有时一节课会多次重复叫到某位同学。为了实现公平点名提问的目的,请你设计一个课堂随机点名器,程序能够从csv文件中读取全班所有同学的姓名,当老师输入任意字符时,程序随机显示一个同学的姓名(已点过的学生不再显示),直到老师直接按下回车键或全部学生被点过名为止。

1.结合生活经验,构思解题思路

通过问题引导,让学生结合生活经验,提出解决方案。学生的经验有来自于自身生活实践获得的,也有来自于观察他人生活实践获得的。比如学生联想统计未交作业同学名单得出在学生名册上打钩的方法。比如学生联想抽奖的过程得出把点到过的学生姓名去掉的方法。通过讨论小结出以下两种方法(如图1所示):


图1

2.切换思维方式,提升解题巧力

试错、纠错是程序学习中不可或缺的关键步骤,纠错的过程其实是从不同的角度和方向让学生重新审视、解析问题,在寻求解决问题方法的过程中不断地变换思维,开阔思路,加深对知识的理解,也是学生积累经验,活化思维的关键。在这个过程中,设计中的错误发生要让学生不易察觉,代码编写的过程要顺理成章,这样出乎意料的运行结果才会让学产生震撼,加深疑问,激发学生去探究,去发现,去创造的欲望。运行结果为学生分析代码提供了直观的感受,降低了学生寻找错误的难度,让学生把更多的时间运用到分析问题和解决问题的过程中去。


因为学生在之前新课中刚了解了数据结构中数组的基本概念和特性,学了数组的创建、数组元素的访问以及数组元素的插入和删除等基本操作的方法,所以在遇到问题的时候,学生首先想到的就是运用数组来解决问题,这也是笔者本节课要完成的主要教学目标,让学生学会运用数组解决生活中的实际问题。所以笔者首先引导学生根据方法一(如图1所示)的思路,尝试运用数组实现代码编写(如图2所示),谋划了如图3所示的程序测试结果。然后通过

提出问题分析问题逆推出解决方案的过程(如图4所示)得出最终解决方法。

图2                图3                       图4             

3.对比多项知识,探究解法差异

一题多解地思维方式是用不同方法求得相同的结果,而程序设计就是一个可以运用不同数据结构实现相同解法,或者用相同数据结构采用不同表达方式实现相同解法的复杂多变的过程,通过尝试多种方法解决同一个问题,可以在解决问题的过程中起到复习巩固相关联的基础知识,加深理解多种算法之间的纵横内在联系规律,熟练掌握多种解题技能的作用,经过一段时间的积累,学生就可以快速有效地找出解决问题的最优方法。

笔者引导学生运用方法一的同一种数据结构数组实现方法二删除被点学生名字(如图1所示),通过删除数组元素的程序实现,探究运用同一种数据结构的不同描述方式实现同一问题的不同解法,提升学生程序表达能力的同时,理解删除数组元素的本质并不是真正意义上的删除,而是通过数组元素的移动和改变记录数组最后一个元素下标的变量来实现的。因为在python中,我们是用列表来模拟数组的,所以笔者最后引导学生回归数据结构的本质,运用列表的方法pop()来实现元素的删除,把图5虚线框内的三行指令改为sname.pop(num)通过输出两种数据的最终结果的对比(如图6所示),让学生深刻理解
两种数据结构在本质上的区别。

图5                          图6

4.找出内在联系,加深思维深度

心理学研究认为:当学生把学习上遇到的矛盾由内部语言转化为外部语言时,原来并不十分清楚的问题便明朗化了,思维过程也随着清楚起来。让学生课后小结就是一种外化的好方法,不但可以表达,而且记录的内容便于日后翻阅、回顾。学会思考要比学会做题更重要,通过课堂学习,学生能摸索、总结出一些规律来,这样不但可以让学生掌握知识的内在联系,完善知识建构,而且这种学习力也将使学生终身受益。课后小结,可以是对一个知识点的小结,也可以是对一类问题的小结,甚至可以是一个小小的启示。

为了避免有的学生不作为,我们可以适当框定小结内容,强制学生完成对基本内容的小结,通过这种方式我们不但可以了解学生对知识掌握的真实情况,还可以培养学生反思与总结的能力,加深思维深度。笔者针对本节的内容,制定了知识小结框架(如图7所示)。

图7

三、一题多解的教学反思

一题多解的教学方法很好的契合了程序设计教学的多变性,通过多角度地思考解决同一问题的多种不同解法,有助于学生解题思路的拓宽,和分析问题能力的提升。借助联想、类比,让学生在尝试验证修正试错实践过程中,得到一系列问题解决方法,并将问题解决过程进行概括,转换为更一般的解题过程,提高了学生应变能力,促成了学生发散思维的形成,当学生面对新问题时,就会敢于联想分析并予以解决。笔者设计的一题多解的整个教学过程,本着让学生学会学习,学会思考,学会知识,创新知识的理念展开,让学生在亲历由表及里,探究事物本质,找出事物内在联系的过程中有效提升智能计算思维。

通过一题多解的教学实践,笔者觉得教学过程中以下几个问题可以改进:

1.任务情境设置时,要围绕新知的重难点展开设计。任务难易度设置要有梯度,由易到难,这样学生的思维有一个适应过程,不至于一下子拔高,跳跃性思维让学生不适应,跟不上教学进度。

2.在讲授新知过程中穿插已学知识点的时候,衔接要自然,不要强搬硬套。

3.不同数据结构实现相同解法,或者相同数据结构用不同表达方式实现相同解法的过程中,方法与方法之间的代码实现改动要少,尽可能简练,最好是一次比一次少,避免给学生思维上造成混乱的同时,在心理上制造一种越学越轻松的愉悦感。

参考文献

[1] 《核心素养与教学改革》作者:钟起泉,崔允漷

[2]一题多解的应用意义https://max.book118.com/html/2020/1214/6201030015003034.shtm

[3] 普通高中信息技术课程标准(2017年版).