启发式教学设计:开启编程学习的钥匙
2020-11-16陈英
陈英
[摘要]《普通高中信息技术课程标准(2017年版)》指出,高中信息技术课程要以学科核心素养为导向,着力培养学生的计算思维和数字化学习与创新素养。文章以高中编程教学中的循环结构应用教学为例,谈编程教学中的启发式教学设计策略。
[关键词]启发式;教学设计;编程
[中图分类号]G633.67 [文献标识码]A
[文章编号]1674-6058(2020)30-0020-02
启发式教学是指教师在教学过程中根据教学任务和学习的客观规律,从学生的实际出发,采用多种方式,以启发学生的思维为核心,引导学生主动、积极、自觉地掌握知识的一种有效教学方法。其宗旨是启发思维、提升能力,基本策略是联系生活、抛出问题,启发铺路、分析问题,思维可视、深究问题,八仙过海、解决问题,总结提炼、多元归一(见图1)。
下面以高中编程教学中的循环结构应用教学为例,谈启发式教学设计策略。
一、联系生活、抛出问题(启发式教学的起点环节)
信息技术的学科价值可精要地表述为“技术服务生活”。其内涵有二:1.教学内容源于生活;2.教学终点是解决问题。陶行知先生提出了“生活即教育”“教学做合一”“行是知之始”的理念。生活中的案例是教育、教学最鲜活的素材,最容易激发学生的学习兴趣,引发认知冲突。教学活动就是要提供“生活问题”——“科学认知”——“服务生活”的思维发展机会。
在学习循环结构应用时,教师选择的问题素材要有浓浓的“生活气息”:设计一个程序,输入候选人编号进行投票,最后统计候选人的得票数(如图2)。
以生活中的问题为学习素材,激发学生的探究意识,建构启发式教学的起点环节。
二、启发铺路、分析问题(启发式教学的助力环节)
编程学习,最重要的是编程思维,通俗地说就是要给出解决问题的算法。教师要注重提升学生的计算思维和信息素养,为学生“自主发现”铺路搭桥。“何时搭”,这是时机问题;“搭多少”,这是程度问题。
例如,接着上面的选举票数统计问题情境,下面简要呈现启发式教学片断:
师:同学们,解决这个问题的大体思路是什么?
生:一个一个比对。
师:怎么比?简要说一下过程。
生:先取出文本框1中的第1个字符与文本框2中的字符进行比对,一致,则统计加1,再取第2个字符,再同样处理,直到最后一个字符。
师:说得很好,那这个例子中,一共需要比对多少次?
生:9次。
师:那么,如果文本框1中的内容变成“1155665”,这时候需要比对多少次?
生:7次。
师:看来,比对次数是不固定的。你能說说比对次数是由什么决定的吗?
生:文本框1中字符串的长度。
师:非常好!那么,在VB中怎么求字符串的长度呢?请同学们看一下下发的VB常用函数文档,思考如何求文本框1中字符串的长度。
生:查到了!Len(textl.text)。
师:第一个问题解决了,再来看第二个问题:如何从文本框1中取一个字符?请同学们再查VB常用函数文档,思考如何取出文本框l中的第1个字符。
生:好像Mid()可以!Mid(textl.text,1,1)。
师:是的,我们可以用Mid函数将文本框1中的字符逐个取出。假设当前要取的位置是i,那么,取第i个字符可以表示为——?
生:Mid(textl.text.i,1).
师:太棒了!我们已经成功解决了两个核心问题,下面,我们尝试把我们的算法用VB语言表达出来。对于“重复劳动”,我们可以用什么语句?对于字符比对,我们可以用什么语句?
生:For+If。
通过一步步的剖析和追问,在“问与答”的过程中,解决问题的思路水到渠成地“水落石出”。
三、思维可视、深究问题(启发式教学的核心环节)
至此,算法已然清晰,但是如何利用计算机解决问题的方法,将问题形式化、抽象化?这是编程学习的难点所在。
可以利用自制教具模拟问题解决的完整过程。一则,教具可将思维可视化,可以帮助学生更好地理解和解决问题。二则,教具可对算法进行模拟验算,从而验证算法的正确性和有效性。三则,学生在和教师一起模拟验算的过程中,能获得新的体验和启发。
此环节,教师更多的是启发学生如何将思维可视化,如何用合适的方法模拟和验证解决问题的算法(如图3)。
通过教具模拟,使学生编程思维更加清晰,算法的正确性和有效性也得到了进一步的验证,学生对编程思维的理解更加深刻,在编程学习方法方面也得到了更多的体验和启迪。
四、八仙过海、解决问题(启发式教学的实践环节)
在厘清了算法后,学生会迫不及待地进入实践环节进行验证。此环节,教师的作用在于帮助学生在错误纠正中得到实践启发和思维提升。具体策略有二:一是点对点的答疑,二是一对多的典型错误精准解释。
1.语法错误——点对点答疑
For i=1 To Len(Text1.Text)
If Mid(Text1.Text,i,1)=Text2.Text
Then
k=k+1
Next
Text3.Text=k
【思维点拨】斜体字部分有语法错误,同学们可以参考一下If语句的语法规则。
2.思维错误——一对多精准解释
For i=l To Len(Text1.Text)
k=0
If Mid(TextI.Text,i,1)=Text2.Text Then k=k+1
Next
Text3.Text=k
【思维点拨】
师:同学们思考一下,某同学的代码为什么不能得到正确结果?问题出在哪里?
生:好像k=0有点怪!
师:怪在哪里?
生:说不出来,就是感觉不太对!
师:我们一起来把程序走一遍,看看k=0有何怪异。
生:哇,发现了!每次比对前,k都变成了0,前面的比对结果丢失。
师:非常好!那怎么改呢?
生:把k=0移动到For的外面!
学生通过上述两种途径,在纠正错误(语法错误和思维错误)的过程中,编程思维得到了培养。
五、总结提炼、多元归一(启发式教学的提升环节)
学生掌握知识的目的是运用和迁移。迁移的好坏,主要在于学生能否在类似情境中,自觉、主动地运用相关知识和策略解决问题。在编程学习中,总结提炼、多元归一,能够更好地帮助学生提升编程思维,掌握编程思想方法。
在总结提升环节,可以借助思维导图工具,帮助学生提炼解决本类问题的编程思想方法(如图5)。
总之,编程学习的关键有二:一是“抽象”,二是“顿悟”。编程学习的本质特征决定了启发式教学在编程学习中的重要性。在教学实践中,教师可以采用上述启发式教学设计策略激发学生学习编程的内驱力,让学生通过自身的主动发现、探究和教师的启发、引导,掌握编程思维和编程思想方法,最终促进学生核心素养的落地生根。
[参考文献]
任友群.普通高中信息技术课程标准(2017年版)解读[M].北京:高等教育出版社,2018.
(责任编辑 周侯辰)