高中《算法与程序设计》教学中计算思维的培养策略
2021-07-14施芬花
施芬花
摘要:通过分析计算思维的内涵和特征,结合高中《算法与程序设计》课程的学习特点,提出了高中《算法与程序设计》教学中计算思维的培养策略研究。从问题的描述、分步、解决、迁移、评价层层递进的过程论述了计算思维的系统、分解、算法、类比、概括等策略与方法,剖析算法与程序设计教学实践中计算思维解决问题的一般过程。
关键词:计算思维;算法与程序设计;问题解决
中图分类号:G632.0文献标识码:A文章编号:1992-7711(2021)09-0074
在提升学生学科素养的大背景下,2017版的《普通高中信息技术课程标准》提出高中信息技术的学科核心素养包括“信息意识”“计算思维”“数字化学习与创新”和“信息社会责任”四个方面。其中,计算思维具有基础性和核心性特征,是高中信息技术课程中最重要的核心要素。《算法与程序设计》课程的学习目标是学会算法和程序实现,它主要体现为程序语言的问题求解,相比系统性和抽象性的问题求解,计算思维在程序语言的问题求解中表现最为直接,最容易让人理解。因此,本文将以算法与程序设计中《枚举算法》的教学为例,探讨在程序设计教学实践中计算思维的培养策略。
一、计算思维
1.计算思维的内涵
2006年,美国卡内基·梅隆大学周以真教授对计算思维做了界定,她认为:计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类行为。2017版《普通高中信息技术课程标准》对计算思维的解释为:个体运用计算机领域的思想方法,在形成问题解决方案的过程中产生的一系列思维活动。日常生活中处处都有计算思维的身影,例如泡茶过程中,烧开水和洗茶杯、洗茶壶、拿茶叶可以一起进行,这就是“并行计算”;整理箱包时,把需要的东西放进背包,这叫“预置和缓存”,将常用物品放到方便取出的包袋中,这就是“栈和队列”;沿着走过的路线寻找丢失物品,这是“回推”……因此,计算思维并不是一个新名词,它与生活密切相关,是人们解决日常问题的一种基本能力。只是随着计算机的出现和发展,计算思维得以更明确的定义和研究。
2.计算思维的特征
2011年,国际教育技术协会和计算机科协对计算思维阐释一个操作定义,认为计算思維具有以下特点:(1)利用计算机和其他相关工具制定问题;(2)逻辑化分析、组织数据;(3)抽象特征,建立模型;(4)运用算法形成解决方案;(5)分析可能的解决方案,识别找到最有效的解决方案;(6)将解决问题的方法迁移到更广泛的问题中。
计算思维并不是计算机科学家或从事计算机行业人员所拥有的特有思维,而是人们在学习生活中的一种普适思维模式。
二、《算法与程序设计》中培养计算思维的重要性
《算法与程序设计》是浙教版高中信息技术中的选修课程,在本模块的学习中,逻辑性、抽象性较强的程序让学生感到难以理解、无从下手、学习难度较高。但教师在讲授算法题目的过程中可能只是简单的知识灌输、就题论题,没有关注学生的思维方式和思维方法。多数学生对算法中的解题过程不是很清楚,计算思维能力并未得到有效激发,从而使学生在算法思维上有一些欠缺。以致有学生认为算法题在课堂上听懂了,但下次碰到类似的题却还是不会解。因此,在算法与程序设计教学中,应该思考如何把学习算法变得有趣有味,如何有效地培养学生问题解决中的计算思维能力,从而将解决问题的方法和策略运用到实际问题解决中,以适应当今快速发展的信息社会。
当然,程序设计并不等价于计算思维。学好程序设计需要计算思维,而学习程序是理解和培养计算思维的最好途径。因此,《算法与程序设计》课程必须从以前的“以讲解语法和程序编写方法为主,单纯将程序设计作为一种编程工具”向“培养学生的问题求解和计算思维能力”转变。计算思维培养如何在程序设计教学中有效落实,将成为当前信息技术教育领域关注和研究的重要内容。
三、《算法与程序设计》中计算思维解决问题的一般过程
在《算法与程序设计》课程的教学实践中,主要通过教师引导学生运用计算思维的方法对问题进行求解、设计算法,确立自动化和形式化的方法,从而培养学生的计算思维能力,并运用到实际的生活问题解决中。下面通过剖析《枚举算法》这一教学案例,谈谈运用计算思维进行问题求解的策略与方法。
1.正确描述问题,重构教学章节,建立系统思维
为正确地描述需要解决的关键问题,突破书本章节内容的束缚,重构教学内容,突破以“落实知识”为目标的思维转变为“培养思维”“知识是工具”的认识,引导学生通过知识工具,关注并分析关键信息,忽略不必要的细节,在思维驱动下能系统地、全面地、准确地整合出问题的关键。
枚举算法属于学考知识内容,在《信息技术基础》一书中,只用了两句话描述了枚举算法的基本思想。而在选修教材《算法与程序设计》一书中,在第二章第一节和第五章第一节分别介绍了枚举算法的基本思想和程序实现。所以,枚举算法的相关内容分布比较零散,如果直接按教材顺序安排教学,不利于学生计算思维能力的培养。这时可以从学生实际情况出发,对教材的内容和顺序进行重构,以便更好地描述枚举的关键问题。
另外,课本运用了“单据中被涂抹数字的推算”问题和“包装问题”两个实例对枚举算法进行了说明。在实例中,强调了枚举算法的基本含义,但没有对枚举算法的优缺点进行重点描述,也没有对枚举算法的优化进一步说明。因此结合实例,可引导学生从易到难、层层递进地组织分析问题,探究出枚举问题的本质特征和优缺点,以便进一步优化。
2.架设教学情境,探究问题分步,培养分解思维
通过游戏、案例、问题等多种多样情境的架设,促进学生学习兴趣,教学重点以讨论问题解决过程为主,教师在课堂中引导学生对问题进行分解操作,明确题目的已知条件和未知问题(求解结果)。在教学过程中,教师应弱化程序语言的理论和语法知识,强化解决问题的思维形成过程,为学生提供足够的思考时间,通过分步探究,对问题形成能够理解的表达形式,确立可以处理的解题方法,以此培养学生的分解思维能力。
在枚举算法的课堂引入环节,教师以人工智能领域中“阿尔法狗”的故事作为导入,介绍围棋的下法——“围棋每一步的可能下法非常多,棋手起手时就有19×19=361种落子选择。一局150回合的围棋可能出现的局面多达10170种”,同时简单引出“阿尔法狗”的工作原理——“挑选出有前途的棋步,抛弃明显的差棋,将计算量控制在计算机可以完成的范围内”。
教师将生活中的热点问题作为情境,激发学生的学习兴趣,引导学生进行以下思考:“围棋那么多下法,能用数学公式解决吗?如何进行筛选?具体需要哪些过程?”从而引出枚举算法的基本概念:一一罗列问题所有的可能解,并根据条件对每一个可能解进行判断,以确定这个可能解是否是问题的真正解。所以可将下棋过程分步为一一列举所有可能下法,挑选出那些有前途的棋步,从而得出先罗列后筛选的枚举特点,当然从中也容易得出枚举的缺点为计算效率低下。
3.建构抽象模型,实现解决方案,渗透算法思维
通过第2步,学生对给定的学习任务已经做好了模块分解,明确了需要解决的关键问题。第3步就需要学生通过分析、抽象,提取出问题的主要特征,合理组织已知数据,建立对应的结构模型。教师应引导学生通过分析问题、设计算法,用可理解和可表达的形式化方法表述问题,并根据算法选取恰当的编程语言实现方案,形成从问题到算法,再从算法到程序的一般过程,在问题解决中渗透算法思维。
枚举算法程序实现时,首先要明确程序实现的三要素,即“循环(枚举解)”“条件判断(筛选解)”“输出解的形式(输出解的内容或统计解的个数)”。其次要掌握枚举算法的一般程序结构。由于枚举算法基本思想的关键词是:“一一列举”和“逐个判断”,因此枚举算法的程序特点为循环包含分支结构语句。循环用来列举可能解,分支结构实现判断可能解是否是问题的真正解。
为说明以上枚举算法解决问题的一般过程,同时又为算法优化做好铺垫。课堂实例采用相对简单的问题:(1)在给定的正整数区间[m,n](m 4.拓展练习提升,迁移实际问题,形成类比思维 计算思维包含着许多问题解决的方法和策略,需要学生反复练习才能得到提升,而高中的信息技术教学时间有限,学生在课堂上不能获得充裕的实践时间,因此教师应结合教学中计算思维的培养目标,设计出难易得当,有利于学生举一反三、知识迁移的实际问题,让学生通过反复实践问题求解的过程强化已有思维方式。通过实践,学生能将不熟悉的问题与熟悉的问题进行比较,发现思维方式的共性,学会对比方法的优劣,从而促进学生的类比思维。 枚举算法也叫“穷举法”,是一种搜索策略,枚举算法的实现要点有两条:列举与检验过程既不重复也不遗漏;尽可能地使可能解的罗列范围最小,以提高解决问题的效率。 生活中能用到枚举算法的实例有很多,为进一步强化算法思维,巩固枚举算法的优化方法,本课又引入我国古代数学家张丘建所著《算经》中的“百钱百鸡”问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? (1)枚举范围的优化。为了提高程序的执行效率,应该尽量缩小枚举的范围。百钱百鸡问题中,设公鸡x只、母鸡y只、小鸡z只,则可写出两种对比方案: 方案二是方案一的优化,由题意得出公鸡5元1只,最多只能买20只,母鸡3元1只,最多只能买33只,因此枚举范围较方案一明显缩小很多,循环次数明显减少,有效提高程序的运行速度。但是两种方案均需要三重循环,所以还需进一步优化。 (2)判断条件优化。如果枚举变量之间存在数量关系,则可以利用该判断条件优化程序。如百钱百鸡问题中,判断条件是:x+ y+z=100和5*x+3*y+z/3=100,可利用条件x+y+z=100,将变量z作为x和y的因变量,即:z=100-x-y,则三重循环可变成两重循环,总循环次数是21*34次,大大提高了执行效率。 5.归纳总结评价,梳理解决过程,锻炼概括思维 当课堂教学以培养计算思维为目标时,总结评价应不再局限于课堂内容和学科知识。教师应锻炼学生的概括思维,让学生自行梳理交流解决问题的过程,提炼分析、判断的思维重点,筛选分解、抽象的思维难点,总结计算思维的具体内容。通过可表达的理解、可视化的展现、可处理的方法、可评估的成果对学生的问题解决能力进行综合性评价。 通过“阿尔法狗”情景导入,得出枚举算法的基本思想,再对求解整除解个数的问题分析,形成自动化的算法方案,最后迁移至實际问题,提出对枚举算法的优化方法,整一个教学的评价需过程性和总结性相结合的综合评价。 四、结语 计算思维培养已成为高中新课改中实现育人价值的核心要素。基于培养计算思维的《算法与程序设计》课程,应弱化程序语言的理论和语法知识,强化学生思维能力的培养和提升,促进学生分析问题、解决问题的能力,让学生学会多角度地设计算法。通过分解、实现、概括、迁移等方法,培养学生的计算思维能力,从而提高学生的创新和探究意识,全面提升学生的信息素养。 参考文献: [1]普通高中信息技术课程标准(2017年版) [2]陈鹏,黄荣怀,梁跃.如何培养计算思维——基于2006-2016年研究文献及最新国际会议论文[J].现代远程教育研究,2018(1):98-112. [3]任云.基于计算思维的高中信息技术课堂教学研究[J].电脑知识与技术,2018,14(20):107-108. [4]彭慧玲.在计算思维模式下《算法与程序设计》教学实践[D].四川师范大学,2013. [5]李玲.以培养计算思维为导向的高中《算法与程序设计》教学案例设计[D].沈阳师范大学,2016. [6]吴月辉.“阿尔法狗”为什么厉害.人民网-人民日报,2016. [7]曹晓明,安娜.培养计算思维的高中信息技术校本课程研究[J].现代教育技术,2018, v.28;No.207(7):107-113. [8]胡秋萍.中学程序设计课程培养计算思维的策略与方法——以Scratch迷宫程序设计为例[J].中小学信息技术教育,2018(6):57-59. (作者单位:浙江省杭州市塘栖中学310000)