赵 斌
(江苏省太仓市明德高级中学 江苏太仓 215400)
2017年7月,国务院印发了新一代人工智能发展规划,在人工智能普及方面,提出了实施全民智能教育项目,在中小学阶段设置人工智能课程,逐步推广编程教育;教育部于2018年3月初公布了《普通高中信息技术课程标准(2017版)》,提出信息技术的核心素养,其中计算思维应运而生,强调学生应以计算思维的方式看待问题、分析问题、解决问题,强调对信息与数据的合理组织,通过综合分析各种信息资源,运用自然语言、流程图等形式描述、理清思维,增强语义理解,进行逻辑思维重定向,辅助开发数学思维,通过设计合理的算法,形成问题解决合理且行之有效的方案。
多年来,计算机教育一直被认为少理论及过度强调工具,普通高中信息技术课程标准的颁布进一步要求教师要让学生学会自主学习、健康生活,通过核心素养的培养,树立正确的学习观;通过实践创新活动,灵活利用信息技术,增强信息意识和责任,提升信息素养,传播计算机科学的魅力、让学生愉悦地进行学科知识学习,积攒创新学习的力量。
从心理学角度,广义上来讲,思维是与大脑有关,是高级的心理活动,是认识的高级形式,是人脑对现实事物的概括加工,揭露了事物的本质特征。从狭义的角度来讲,思维就是逻辑思维。计算机学科和数学学科,在思维培养方面,具有不可或缺的连带关系,数学学科主要培养理论思维,以推理和演绎为特征,培养学生的数学逻辑思维;计算机学科主要培养计算思维,主要以设计和结构为特征,运用计算机科学的基础概念,设计系统,让计算机能理解人类的行为,通过运用适当的编程语言,以递进、并行等方式,启发式开展推理,引导学生对问题进行分解,发现梳理规律,得出结论,最终完成知识的积累与延伸。
计算机处理问题,可以看作模仿人的思维,程序员(编程人员)根据问题,从计算机运行的角度出发,执行如下四个步骤:
第一,解析问题(分析),将问题进行拆分,厘清各个部分的属性,将一个大问题拆分成小问题,分而治之,再综合分析。
第二,模式识别(比较):找出拆分后各个部分之间的异同,考虑问题与问题之间的衔接,也可延伸到因学段的不同,结合不同学段的重点开展符合学段的教育思想与方法。
第三,模式归纳(抽象):探求出模式识别后问题背后的一般规律,从规律入手,理顺符合一般思考的过程。
第四,算法设计(综合):对找出的规律,运用计算机可以理解的方式进行问题解决方法的设计。
因此,计算思维其实是一个逐步分解,层层归纳,最终总结出问题解决思路的思维模式,能够不断提高学生的抽象思维和逻辑思维,培养面对模糊、复杂、开放性问题时能有解决问题的自信心和行动力。
本文以数学中斐波那契数列为例,描述在计算思维培养方面所做的一些尝试,分析在问题或项目解决的过程中,如何以学生为中心,培养其信息技术核心素养。
基础问题描述:斐波那契数列,又被称为黄金分割数列或兔子数列,指的是诸如这样的一个数列:1、1、2、3、5、8、13、21、34、55、89、144……,在数学上被如下递推的方法进行定义:F(1)=1,F(2)=2,F(n)=F(n-1)+F(n-2)(n≥3,n∈N)。
通过设计两个基础问题,在分析、讨论和生成解决方案的过程中,运用编程语言实现目标,帮助学生理解思维问题计算机处理的一般过程。
问题情景一:打印出指定第k个位置上的数字,例如第10个位置上,输出当前位置的数列值为55。
逻辑思维的引入,以数学的角度引导学生,根据斐波那契数列推导公式,推导出第10个位置的数值计算公式为:f(10)=f(9)+f(8),观察推导中的计算公式,发现f(9)和f(8)成为新的未知数,还应该重复之前的操作进行推导,进行逆向计算后,最终得出f(10)的答案为55。基本模式如图1所示,从右往左,依次计算相应位置的数值,直至得出规定位置的数字为止。
图1
计算思维的引入,引导学生描述计算机处理问题的一般过程,根据数学思维的学习过程,引入两个初始变量a,b,分别指向F1和F2,存储F1和F2的值,初始值均设为1;引入第三个变量c,存储的内容为a和b两者的和,同时将a和b指向进行左移,分别指向F2和F3;重复相同的过程,直至F10被计算出来为止。基本模式如图2所示。通过变量的应用,理解计算机处理数据的基本方法,即运用计算机能理解的方式,逐步模拟人的思维模式,完成程序的运行。在此过程中,除了使用自然语言进行描述,也可以使用流程图来辅助理解程序运行的过程,更直观地了解值在处理过程中的改变,进一步理解计算机模拟问题解决的方式方法,流程图如图3所示。
图2
图3
进一步挖掘细究,在计算思维的学习、提升的过程中,考虑计算机的特殊性,引入相应的概念来辅助程序的完成,比如本例中的变量及表示的数据类型以及范围的合理考虑等,也是培养学生计算思维、逻辑严密性的根本所在。除此之外,分析问题解决中的计算机运行的特点,即处理重复工作,引出在计算思维中很重要的循环概念,简化描述的步骤,形成最终的解决思路。在教学、学习的过程中普及程序设计中的基础概念和基础结构,如图4、图5所示,描述了C++环境下的解决方案,观察解决方案的不同,学生进行关键特征分析。
图4
图5
抛开C++程序的规范问题,单从解决问题的角度出发,剖析分解,层层归纳,通过变量存储相应的数据,通过for循环完成向左递推的任务,引入递归的思想,提升学生的信息素养,如图5所示,引导学生分析程序处理方式的不同。从表面上看,程序上虽然没有体现出循环,但是究其本质,还是体现了循环的概念,通过不断调用本身直至所需的位置计算出数值为止,进一步引导分析与循环方式的不同,体现出计算机解决问题的一个显著特点,即分而治之,方法多样且符合计算机运行的规律。
通过问题一的解决,从数学思维角度向计算思维角度进行转换,以计算机运行的视角重新审视问题,缩小问题范围,不断剖析、归纳,了解算法解决问题的思路,培养了学生信息处理的意识和计算思维的能力。
问题情景二:输出至k(3≤k≤46)个位置上的所有的数字,每个数字之间用分隔符分开;每五个数字为一行,换行显示所有的数字。
在完成指定位置上数字输出的基础上,逐步深化引导,进一步分析问题,缩小范围,归纳思路,提出修改,实施评估。举例示范,在递归的基础上修改方案并实施,即引入for循环,依次通过递归的方式输出所在位置的数值,通过求余的方式实施换行,考虑语句的运行顺序,及时在换行前进行数值的输出。针对问题的解决过程,贯通了问题与问题之间的衔接,引导学生对模式进行识别,探索规律,进一步理解递归与循环的区别和联系,如图6所示。
图6
抛出问题,提升教学效果,例如如何在图4的基础上输出所有数据,同样要求按每五个换行的模式进行输出,引导学生分析,在过程中关注知识的迁移和模式的归纳。通过模拟、分析、讨论等过程形成问题解决方案,在运行的过程中,不断地验证与调整,提升信息处理意识,增强计算思维与逻辑思维的培养。
信息技术教育的最终目标是培养具有一定信息素养的学生,鼓励学生思维进阶,进一步挖掘问题,注重进行问题验证。以讨论分析斐波那契数列和黄金分割数的关系为例,通过问题验证的过程分析,进一步理清计算思维和理论思维之间的关系和区别,进一步理解信息技术核心素养。
问题描述:黄金分割数的计算,输出在第几个位置数列打印后,能得出0.618的数字(保留三位数)。
分析问题:首先明确在斐波那契数列中,黄金分割数是由当前位置前一个位置的数据和当前位置的数据相除后所得。
分析要点:
第一,首先考虑计算机如何保存这些数据,引出浮点数以及数组的学习。
第二,思考三位数保留的概念,即在计算机中如何判断和界定左、右边界的数据。
第三,位置数据查出后,如何终止程序,在得出结论的同时,使之不再执行后续的循环,减少程序运行时间,提升程序运行效率,确保算法和程序的可行性和合理性。
结合上述分析要点,学生讨论、分析,考虑核心程序的修改,尝试解决需求,形成计算机解决问题的思路。通过数组空间的开辟,保存数列中的数值,根据四舍五入的方式,确定左右边界值,引导学生查阅资料,对for循环中的continue和break语句进行理解,充分发挥学生的主观能动性。程序示例如图7所示。
图7
通过对斐波那契数列数学逻辑思维转为计算思维的研究过程中,在学科区别的对比中,理解体会计算思维的培养,明确计算思维其实就是一个把复杂、困难问题进行求解的过程。在思维方法的运用中,从计算机技术角度出发,通过将复杂的、大而难的问题分成多个部分去解决,体现了计算机并行、分而治之的处理方式;当分解出来的问题不能直接解决的时候,还应继续分解,也是一种分而治之的思维训练,经过多维分析,抽象和分解并存的方法,控制庞杂任务的完成。通过其中一个或几个适合的方式来陈述问题,建模处理,期望通过概念化、结构化的方法培养工程思维,提升计算思维,围绕计算思维的六步培养法:问题界定、组织分析、数据抽象、自动化处理、确认分析和概括迁移的步骤进行巩固强化和提升。
综上所述,计算思维的培养是一个系列化的过程,具有一定的规律性。在规律探究的过程中寻求突破,在突破过程中,加深问题分析、处理、解决思路的扩展,明确计算思维处理方式的特点,进一步提升计算思维能力,为以后的终身学习和创新学习打好基础。