基于计算思维培养的高中信息技术教学设计探究
——以高中信息技术《枚举算法》一课为例
2018-08-08孙旭萍
孙旭萍
(杭州市余杭文昌高级中学,浙江 杭州)
一、将计算思维的培养渗透到教学目标的制定中
目前基于技术素养培养的以实践操作为重的课堂教学不能满足计算思维培养的需要。因此,要改变以往教学的思路和方法,教师在实施教学的过程中,必须将计算思维的培养明确到教学目标中,因为教学目标是教学的核心和灵魂,围绕着教学目标,才能顺利有效地开展教学活动和评价。
枚举算法是日常学习、生活、工作中用到的最普遍和最常规的算法,而且容易掌握。它利用计算机快速运算、高准确性的特点,列举所有可能的情况,并根据筛选条件进行逐一检查,找到符合条件的答案。让学生在经历问题解决的过程中体会枚举算法的基本思想和程序实现是《课程标准》和《学科教学指导意见》对这个经典算法学习的指导性要求。
在教学设计时,笔者将枚举算法的教学目标确定为:(1)了解枚举算法的概念和基本思想;(2)能用程序代码实现枚举算法;(3)能运用枚举算法解决生活中的实际问题,认识到算法和程序设计在解决问题过程中的地位和作用。枚举算法的基本思路可以归纳为八个字:一一列举,逐个检验。在实际使用中,“一一列举”采用循环语句来实现;“逐个检验”采用选择语句来实现。关于编程实现枚举算法,根据枚举算法的原理和计算思维处理问题的本质,可以将问题分解为三个子目标:(1)如何确定枚举对象和枚举范围,做到不能遗漏,也要避免重复;(2)如何确定判断条件,逐一验证每个解是否是正确的解;(3)如何使可能解的范围降至最小,以便提高解决问题的效率。通过以上三个子目标的解决引导学生建构正确的数学模型,确定枚举方案,也是本节课需要突破的重难点。
这样将复杂的算法思想和解决问题的过程分解为若干个子问题、子目标的教学思路同样可以应用到其他经典算法的教学当中,学生在学习目标达成的过程中逐步提升计算思维的培养,体验算法的魅力,加深学习算法的欲望。
二、将计算思维的培养渗透到任务的设置中
(一)新课引入环节的任务设置
在生活和学习中,人们经常会不经意间运用“枚举算法”的基本原理进行问题的解决。比如,让你用一串钥匙去开一把锁,但是不知道具体是用哪一把钥匙,你就会一把一把地挨个地逐个尝试,直至打开锁为止。本节课,笔者设计的引入环节如下:
【情境】凯凯妈妈将家里的电脑设置了密码,并告诉凯凯密码是四位数的偶数,并且每个数位的数相同。请通过提示解密打开电脑。
【学生活动】尝试解开密码,并说出解开密码的过程(重点描述思考过程)。
【教师引导】各位同学尝试解开密码的过程就是枚举算法。
【思维拓展】如果这个密码的四个位数上的数不同呢?
笔者通过一个简单的、十分常见的小任务引入枚举算法的主题,让学生体会算法并不抽象,使其更有亲切感,并亲历枚举算法解决问题的基本思路:第一步,根据问题的要求,把所有可能的情况都考虑到,密码可能是 2222、4444、6666、8888;第二步,对全部可能的结果(密码)逐一进行判断,过滤掉不符合要求的,直至找到正确的结果(密码)。利用“思维拓展”的设置让学生体会到人工穷举的局限性,发挥计算解决问题的优势,引发学生思考生活中的例子用计算机编程解决的必要性和意义。
(二)“主题任务”的设置
在枚举算法实例教学中,采用一个任务贯穿整个教学过程,这样可以把一个问题讲透,加深学生印象,笔者称之为“主题任务”。笔者在这一环节设置了以下这些任务:
1.枚举方案的设计及程序实现
【情境】最近警方抓获一批制造伪钞的犯罪分子,并发现制造假币用的模板,但是由于受到损坏,个位数和百位数已经模糊不清,我们看到的后六位数仅仅是519□4□,同时据情报称,在他们制造的这批假币中,编号有一定的规律,后六位数能被42整除。请设计算法挑选出符合要求的人民币编码。
【学生活动】以4人小组讨论、制定解决方案。
【教师引导】教师引导学生从以下两个方面去思考并制定方案:
(1)先罗列:把各种可能的情况都考虑到,确定人民币编码列举的范围
(2)后筛选:对全部可能结果逐一进行判断,确定筛选条件
【学生活动】小组讨论分析问题、完成枚举算法程序代码解决问题。
笔者通过思维引导策略有目的性地将计算思维渗透到任务的设置中,启发学生将抽象的概念进行数学建模,并用循环结构和选择结构进行实现。培养界定问题、抽象特征、建立结构模型、确定算法的计算思维。以下是在实际的教学过程中,大多数学生出现的问题分析过程,也在笔者的预计之中:
①问题分析
先罗列范围:这个6位数为519040-519949
后筛选条件:a.这个6位数的十位是4;
b.这个6位数能被42整除
针对以上问题分析,笔者给出了以下部分关键代码,并留空,要求学生完成代码填空,加强学生读程序能力和基本语句应用能力。
②程序实现:完善程序关键代码。
Dim x as integer,y as integer ′x表示6位整数,y表示十位上的数字
For x=to____step____
y=x10 mod 10 ′从6位数x中分离出十位上的数
If______then
Print x
Endif
Next x
学生经过个人思考、小组讨论,最后以小组讨论的形式给出整个方案,这一过程培养了学生合作探究能力和计算思维过程描述能力,让学生积极主动地参与到课堂中来。任务进行到这里并没有结束,笔者再次提出了新的拓展任务:在不遗漏任何一个正确解的前提下,如何缩小罗列的编码范围,从而达到循环结构循环次数减少的目的,来提高程序的执行效率,即实现程序最优化。学生面临新的挑战,产生更强烈的思维碰撞,激发解决问题的兴趣,在教师引导、学生讨论的过程中逐步完成以下新方案,进一步提升计算思维:
①问题分析 6位数 519 m4 n
先罗列范围:m:1-9 n:0-9
后筛选条件:这个6位数能被42整除
②程序实现:完善程序关键代码。
Dim m as integer,n as integer ′m表示百位上的数字,n表示个位上的数字
Dim x as integer ′x表示6位整数
For m=____to____step____
For n=____to____step____
x=519000+100*m+40+n
If______then
print x
Endif
Next n
Next m
这一环节任务的设置让学生认识到枚举策略的选择对枚举算法执行效率的影响,从而突显计算思维对解决问题效率的重要性。培养学生多维度思考问题的习惯,提升计算思维的应用。最后笔者又设置了归纳总结和枚举算法应用探讨的任务。
2.归纳总结
【学生活动】(1)通过前面任务的完成过程归纳枚举算法解决问题的基本思想
(2)通过连个方案代码填空,总结枚举算法程序控制结构
(3)联系实际,归纳枚举算法优缺点
3.拓展延伸
【学生活动】思考以下问题能用枚举算法解决吗?
(1)有蜘蛛、蜻蜓、蝉三种动物共18只,共有腿118条,翅膀20对(蜘蛛8条腿;蜻蜓6条腿,2对翅膀;蝉6条腿,1对翅膀),三种动物各几只?
(2)求高一年级学生图书馆借阅人均册数。
(3)如果存在这样一个三位数:三位数等于它的每个数位上数字的立方和,如153=13+53+33,则我们称此数为“水仙花数”。求100~999之间的全部水仙花数。
【归纳总结】从问题解决过程中提取归纳枚举算法适用情况。
整个课堂教学中,学生经历了分析问题、建构数学模型、确定算法、编程实现算法的基本过程,并在两个枚举方案的制定过程中领会枚举算法解决问题的基本思路、算法优化和枚举算法的适用范围,在解决问题和完成任务中提升计算思维;教师通过组织学生讨论和归纳、思维启发等教学方式来培养学生的计算思维,从解决实际问题中亲历枚举算法的实现和知识的迁移,并且在最后设置了枚举算法的现实应用的探究,使算法的学习回归到生活中。
因此,在高中信息技术课堂中,教师可以采用“主题任务”的教学模式来引导学生学习,整个任务中情境的发展必须围绕着利用计算思维处理问题过程的思路而展开。学生在“主题任务”引导下进行探究,并且在任务完成时总结出知识规律、过程和方法,并将其迁移运用到其他的实际问题中。
三、将计算思维的培养渗透到教学资源的准备中
在教学设计过程中,为了能够进一步掌握学生认知和技能存在的差异,实施因材施教,教师要充分地做好备教材、备学情这一环节,然后根据计算思维培养目标进行教材的重组,为辅助教学资源的准备奠定基础。
笔者在枚举算法教学设计的时候,准备了自主学习任务单,而且在课前下发,使学生对上文中提到的任务有充分的时间去思考,为学生计算思维的培养和应用提供了载体。
教学资源的开发和使用情况有时会很大程度上影响一节课的效果,如何激发学习兴趣、提高学生课堂参与度、促进学生学习探究等等,都是教师在教学资源开发时需要思考和解决的问题。教学资源的形式可以多样化,比如流程图、程序代码、自主学习任务单、视频动画等,对于高中信息技术学科,教学资源可以更加的丰富。
四、将计算思维的培养渗透到多元评价的组织中
在课堂教学结束时,教师为了检验学生知识点掌握情况,可以创建多元化的评价机制,为后续课程教学的设置和改进提供依据。多元评价,一方面可以是教师对学生的评价,综合利用好过程性评价和总结性评价,在《枚举算法》一课中,笔者根据学生在学习过程中的表现以及方案完成情况来评价学生计算思维解决问题的能力,由于学生基础整体较弱,在程序代码部分采用了留白填空来检测学生对枚举算法解决问题的达成度;另一方面借助学习任务单和评价表,完成学生自评和互评。笔者根据教学目标和计算思维培养目标设计了一份发展性评价表(如下表),学生在进行自评时,就能很清楚地知道自己掌握到什么程度,有利于教师完成教学设计的调整,进而再次强化学生的计算思维。
“用枚举算法解决问题”发展性评价表
计算思维的培养是高中生解决问题思维能力提升的基本要求,因此教师在课程教学的过程中一定要注意计算思维的培养。但是,笔者认为高中信息课程中关于计算思维的培养和应用给予的重视还不够,仅以《枚举算法》一课为例,将计算思维的培养渗透到课程教学设计中,尝试通过教师引导帮助学生定义问题、抽象特征、建构数学模型、设计合理算法的过程来形成解决问题的方案,并且在解决问题时总结出过程与方法,能够举一反三迁移到其他相关的问题解决之中,为学生核心素养的提升、解决问题能力的提高打下基础。