指向学生计算思维的算法与程序设计教学微探
2019-09-17陈文勤
陈文勤
摘 要:算法与程序设计的学习有助于培养高中生计算思维,在开展此模块教学中需要教师结合学生生活实际,创设问题情境,激发学生学习热情,给予他们求同存异的空间,允许他们“犯错”,从而达到培养学生计算思维的目的。
关键词:计算思维;算法与程序设计;教学微探
在新一轮的课程改革中,首次将学科核心素养纳入教学的各个环节中。高中信息科技学科素养包括了信息意识、计算思维、数字化学习与创新和信息社会责任。核心素养中强调了计算思维,既要求教师培养学生在信息化环境下发现信息、使用信息的能力,也要求教师注重提升学生自动化、形式化、模块化、系统化处理信息的能力。信息化社会中的学生应当具备一定的计算思维能力,这就要求信息科技学科教师在教学中重视对学生计算思维的培养,而学习算法与程序设计恰好是实现计算思维提升的有效途径。
一、对计算思维的理解
2006年3月,美国卡内基·梅隆大学计算机科学系主任周以真(Jeannette M. Wing)教授在美国计算机权威期刊Communi-cations of the ACM杂志上给出并定义了计算思维(Computational Thinking)。周教授认为:计算思维是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。
从周教授提出的概念中,我们可以分析得到:对于高中阶段的学生来说,具备计算思维的学生应该在信息活动中采用计算机可以处理的方式界定问题、抽象特征、建立结构模型、合理组织数据;通过判断、分析与综合各种信息资源,运用合理的算法形成解决问题方案;总结利用计算机解决问题的过程与方法,并迁移到与之相关的其他问题解决之中。
二、當前高中生计算思维的现状
高中阶段是一个人思维转变与提升的阶段,从过去具体、形象、别人给予的接受思维逐步转变为抽象、概括、自我提炼的思维能力,这一转变在高中信息科技课程中尤为明显。身处信息时代的学生知道很多、接触很多,但缺乏的是组织、迁移、综合运用的能力。当面对一个综合性问题时,如何用计算思维去寻找解决问题的步骤并加以实施、检验,如何用一种方法解决一类问题,是高中信息科技教学中需要达成的培养目标。
学习算法与程序设计是培养学生计算思维的有效途径之一。学生通过对算法与程序设计的学习,能够体验到解决问题的过程中包含了问题归纳、信息概括、数据抽象、思维逻辑,从而提升以“逻辑能力、算法能力、递归能力、抽象能力”为一体的计算思维。
然而,在实际教学中,学生对于学习算法与程序设计的目的并不明确,在学习算法一段时间后容易产生诸如“学习算法就是用计算机去计算数学问题、物理问题”“我不想做程序员,我为何要学习算法?”之类的困扰,这其实走入了一个学习误区,也是不利于学生计算思维能力的培养和提升的。
三、算法与程序设计教学中培养学生计算思维的思考与探索
计算思维是从机器计算的实现过程来理解、解释信息处理问题的一般方法,帮助学生认识到机器计算与人脑计算间的特点与差异。通过对算法和程序设计的学习,学生可以提升分析问题、建立结构模型、运用合理的算法步骤去解决问题的能力,也能体验到如何使用计算思维去解决实际问题。
计算思维的培养不是一蹴而就的,单靠机械重复的训练也不可能达成,但是现阶段,计算思维更多还停留在理念层面,能够用以指导教师开展计算思维的教学策略还比较少。这就需要我们教师在教学设计中以使用计算思维分析处理问题为出发点,通过情境创设、任务驱动激发学生对计算思维的兴趣。基于这样的思考,在算法和程序设计模块教学设计中,我更多地关注如何将学生现有的理解力、思维习惯和生活体验与我们的算法结合起来,在他们感兴趣的问题中逐步深入培养他们的计算思维。
(一)贴近生活实际,创设学习情境
教师可以选择贴近实际生活的案例,借用学生熟悉的或者感兴趣的内容来创设学习情境,从而引导学生运用计算思维去寻找答案。例如,分支结构是算法三大基本结构之一。从分支结构开始,对学生的逻辑判断能力有了较高的要求。学生不仅需要合理、规范地运用表达式描述判断的情况,还需要分析判断的结果(是与否)分别代表了什么;同时,算法步骤的严密性也得以加强,在设计相应的算法时必须考虑“符合情况需要执行哪些步骤,不符合情况需要执行哪些步骤,退出分支后是否还有步骤”这几个问题。只有对分支结构理解透彻,才能有助于学生学会区分分支结构与循环结构,为后续的学习打好基础。
在本节课的一开始,我用《幸福拍手歌》导入取代了一开始构思的探究海伦公式导入。用学生熟悉的歌词引入分支结构这个课题,让他们能够感受到原来生活中就充满了计算思维。对学生来说,虽然之前没有了解过什么是分支结构,但看到歌词“如果……就……”他们马上就能理解相关含义了。与此同时,这首歌中还包含了单分支的思想,因此,我在导入单分支前让学生用流程图来描述其中一句歌词“如果感到幸福你就拍拍手”,学生在设计N分支时会发现歌词中没有描述这根分支上的步骤,自然而然地就用单分支的形式进行描述(见图1)。在这个过程中,学生通过将歌词抽象化,概括出了判断表达式、Y分支步骤、退出分支后的步骤,即为信息概括→数据抽象→逻辑思维的体验过程。
(二)尊重思维差异,支撑个性学径
学生会产生“程序员才需要学习算法”的误解,一定程度上是因为我们过于关注学生是否能够通过编写程序来实现算法,并在相似的题目上进行反复的训练。计算思维是一种循序渐进的能力培养,也体现出每个人是如何思考问题、解决问题的,因此我们要尊重学生思维的差异,即在算法与程序设计的教学中,我们应当更多地去关注学生是怎么思考的,去鼓励学生之间的思维差异性,通过分析、比较算法的结构与步骤内容,从而感受学习算法与程序设计是对思维的训练。