论文部分内容阅读
浙江省新高考实施“7选3”模式后,技术成为其中的一门选考科目。算法与程序设计作为该科目选考的主要考核内容,其难度和广度有所提升,经典算法如解析、枚举、排序、查找递归等成为选考教学的重难点。在教研时,同行们常会提出一些问题:在学习这些经典算法时,如何让学生真正经历计算机解决问题的过程与方法?如何让学生界定问题、建模分析、设计算法解决问题,形成科学稳定的知识逻辑结构?如何解决经典算法学习中遇到的疑难问题?如何通过这些疑难问题的解决来培养和提升学生的思维能力?周以真教授指出,计算思维就是运用计算机科学的基本概念去求解问题、设计系统和理解人类的行为,它涵盖了计算机科学广度的一系列思维活动。其一般过程是注重理解问题的本质,抽象问题的特征,继而构造模型设计可自动化执行的算法来解决问题。具体过程如图1所示。
计算思维的提出,使高中信息技术课程的教学逐渐从注重实践操作的技术素养层面上升到注重思维素养的培养层面,这就给经典算法选考的学习和疑难问题的解决提供了良好的方法论指导。笔者结合自己的教学实践,分别从理解本质确定目标、设计任务讲评归纳、合理建构变式内化与多元评价差异发展四个方面进行了探究。
理解本质并确定目标
在学习经典算法选考部分时,教师需要解决的是与本算法相关的既往存留问题和本课学习中的疑难问题。所以,在实施计算思维经典算法教学时,教师首先应回顾相关已学知识点,其常考常错点则需通过思维引领精讲总结的方式予以正本清源,让学生理解这些疑难问题的本质,清除障碍,进而明确本堂课基于计算思维的学习目标。
以经典算法冒泡排序的学习为例,学业水平考试部分知识点与本课例相关的主要有赋值语句、选择语句及多重循环,教学经验得出疑难点是多重循环的理解应用。笔者在回顾、复习语法的基础上将其结合枚举算法中的“百钱百鸡”问题(如图2),采取抽象思维形象化的方法,用连线的形式将抽象问题形象地呈现出来(如图3),让学生理解多重循环的原理本质。
分析:①当控制外循环变量gj的取值不变,且控制中循环变量mj的取值也不变时,内循环变量xj需从1依次变化到100,同时形成100组解的形式,并进行筛选判断。②当控制外循环变量gj的取值不变时,中循环mj的取值需从1变化到33,且针对每一次中循环mj的取值变化,内循环变量xj的取值均需从1变化到100,同时形成33×100组解的形式,并进行筛选判断。③外循环变量gj的取值可以从1依次变化到20,针对外循环变量每一次取值的变化,中循环变量mj的取值均需从1变化到33;同时,针对中循环变量mj取值的每一次变化,内循环变量xj的值均需从1变化到100;由此可形成20×33×100组解的形式,并进行筛选判断。
小结:中循环变动一次,内循环需变化100次;外循环变动一次,则中循环需变动33次,同时内循环需变化33个100次。学生通过连线为载体将抽象问题形象化,经由计算思维的方法过程,将多重循环的理解化难为易,达到理解问题本质的同时提升了思维能力。
学习目标是教学的核心和灵魂,围绕教学目标,才能顺利开展教学活动和评价。所以,笔者在夯实基础后,将冒泡排序算法学习的知识教学目标分解成三个具体目标:①什么是冒泡排序;②如何编写程序实现冒泡排序;③如何运用冒泡算法解决实际问题。关于什么是冒泡排序,笔者依据冒泡算法的问题本质,按照计算思维处理问题的模式,将问题界定为三个子目标:①n个数据排序实质就是寻找n-1个最值的过程;②如何找一个最值;③数据交换算法。基于这样的问题本质,分解能更好地发展学生的计算思维,把学生较难理解的算法原理转变为一个个容易理解的、已知经典的子问题。同时,这也为下一环节的算法程序的实现打下基础。
设计任务并讲评归纳
围绕学习目标,笔者根据计算思维的特点来设计任务,这里需注意两点:其一是根据学习目标,选取学生学习生活中熟悉的问题切入,设计适合培养计算思维的任务;其二是所设计任务的深度和广度要符合学生的知识水平和认知规律,方便学生运用计算思维的方法展开分析思考,进而加深对算法思维的理解和对疑难点的突破。
在本课例的任务设计方面,基于学生的认知规律,首先,笔者请学生看冒泡排序的Flash动画,并引导学生说出动画中所蕴含的冒泡算法原理,即“看动画,说原理”环节;接着,笔者又请一组学生头戴写有自己出生日期后两位的生日帽模拟冒泡排序Flash动画,进行排生日游戏,此为“演动画”环节,使枯燥的算法原理鲜活地呈现出来,加深了学生对冒泡算法的印象。为了揭示问題的本质,笔者选取了四个数据,采取小组合作分组探究的方式,将给定排序方向为从前往后和从后往前、排序结果为升序和降序,进行排列组合得到四种冒泡排序方式,对第一趟的排序结果、比较趟数、每趟比较次数以及比较交换规则分别进行探究(如上页图4)。学生通过小组合作学习,初步经历运用计算思维展开问题的分析和思考。
在对这四种冒泡方式进行小组讲评后,笔者引导学生一起对这四种冒泡方式的比较趟数、每趟比较次数以及比较交换规则进行异同总结(如图5),这为学生理解算法的多样性,进一步理解算法原理和后续的疑难点——算法程序的实现,打下了基础。
以第四组为例,师生一起详细探究归纳,旨在让学生理解冒泡算法问题的本质,即:n个数排序就是寻找n-1个最值的过程;寻找最值的过程就是从最后一个位置开始,逐个往前,相邻两个数依次比较,让最值自动冒出来;比较规则是,如果后面数大就交换两者的值(如图6)。
在这一任务教学中,笔者主要使用讨论法、启发法、归纳法等教学方法来培养学生的计算思维,从分组探究中逐步理解冒泡算法的原理过程。学生通过自主学习、小组合作探究体验计算思维的方法,在解决问题完成任务中理解问题本质及提升计算思维。教师在完成任务过程中理性严密引导,使学生变被动学习为主动学习,积极参与到课堂中来,提高了学习效率。
计算思维的提出,使高中信息技术课程的教学逐渐从注重实践操作的技术素养层面上升到注重思维素养的培养层面,这就给经典算法选考的学习和疑难问题的解决提供了良好的方法论指导。笔者结合自己的教学实践,分别从理解本质确定目标、设计任务讲评归纳、合理建构变式内化与多元评价差异发展四个方面进行了探究。
理解本质并确定目标
在学习经典算法选考部分时,教师需要解决的是与本算法相关的既往存留问题和本课学习中的疑难问题。所以,在实施计算思维经典算法教学时,教师首先应回顾相关已学知识点,其常考常错点则需通过思维引领精讲总结的方式予以正本清源,让学生理解这些疑难问题的本质,清除障碍,进而明确本堂课基于计算思维的学习目标。
以经典算法冒泡排序的学习为例,学业水平考试部分知识点与本课例相关的主要有赋值语句、选择语句及多重循环,教学经验得出疑难点是多重循环的理解应用。笔者在回顾、复习语法的基础上将其结合枚举算法中的“百钱百鸡”问题(如图2),采取抽象思维形象化的方法,用连线的形式将抽象问题形象地呈现出来(如图3),让学生理解多重循环的原理本质。
分析:①当控制外循环变量gj的取值不变,且控制中循环变量mj的取值也不变时,内循环变量xj需从1依次变化到100,同时形成100组解的形式,并进行筛选判断。②当控制外循环变量gj的取值不变时,中循环mj的取值需从1变化到33,且针对每一次中循环mj的取值变化,内循环变量xj的取值均需从1变化到100,同时形成33×100组解的形式,并进行筛选判断。③外循环变量gj的取值可以从1依次变化到20,针对外循环变量每一次取值的变化,中循环变量mj的取值均需从1变化到33;同时,针对中循环变量mj取值的每一次变化,内循环变量xj的值均需从1变化到100;由此可形成20×33×100组解的形式,并进行筛选判断。
小结:中循环变动一次,内循环需变化100次;外循环变动一次,则中循环需变动33次,同时内循环需变化33个100次。学生通过连线为载体将抽象问题形象化,经由计算思维的方法过程,将多重循环的理解化难为易,达到理解问题本质的同时提升了思维能力。
学习目标是教学的核心和灵魂,围绕教学目标,才能顺利开展教学活动和评价。所以,笔者在夯实基础后,将冒泡排序算法学习的知识教学目标分解成三个具体目标:①什么是冒泡排序;②如何编写程序实现冒泡排序;③如何运用冒泡算法解决实际问题。关于什么是冒泡排序,笔者依据冒泡算法的问题本质,按照计算思维处理问题的模式,将问题界定为三个子目标:①n个数据排序实质就是寻找n-1个最值的过程;②如何找一个最值;③数据交换算法。基于这样的问题本质,分解能更好地发展学生的计算思维,把学生较难理解的算法原理转变为一个个容易理解的、已知经典的子问题。同时,这也为下一环节的算法程序的实现打下基础。
设计任务并讲评归纳
围绕学习目标,笔者根据计算思维的特点来设计任务,这里需注意两点:其一是根据学习目标,选取学生学习生活中熟悉的问题切入,设计适合培养计算思维的任务;其二是所设计任务的深度和广度要符合学生的知识水平和认知规律,方便学生运用计算思维的方法展开分析思考,进而加深对算法思维的理解和对疑难点的突破。
在本课例的任务设计方面,基于学生的认知规律,首先,笔者请学生看冒泡排序的Flash动画,并引导学生说出动画中所蕴含的冒泡算法原理,即“看动画,说原理”环节;接着,笔者又请一组学生头戴写有自己出生日期后两位的生日帽模拟冒泡排序Flash动画,进行排生日游戏,此为“演动画”环节,使枯燥的算法原理鲜活地呈现出来,加深了学生对冒泡算法的印象。为了揭示问題的本质,笔者选取了四个数据,采取小组合作分组探究的方式,将给定排序方向为从前往后和从后往前、排序结果为升序和降序,进行排列组合得到四种冒泡排序方式,对第一趟的排序结果、比较趟数、每趟比较次数以及比较交换规则分别进行探究(如上页图4)。学生通过小组合作学习,初步经历运用计算思维展开问题的分析和思考。
在对这四种冒泡方式进行小组讲评后,笔者引导学生一起对这四种冒泡方式的比较趟数、每趟比较次数以及比较交换规则进行异同总结(如图5),这为学生理解算法的多样性,进一步理解算法原理和后续的疑难点——算法程序的实现,打下了基础。
以第四组为例,师生一起详细探究归纳,旨在让学生理解冒泡算法问题的本质,即:n个数排序就是寻找n-1个最值的过程;寻找最值的过程就是从最后一个位置开始,逐个往前,相邻两个数依次比较,让最值自动冒出来;比较规则是,如果后面数大就交换两者的值(如图6)。
在这一任务教学中,笔者主要使用讨论法、启发法、归纳法等教学方法来培养学生的计算思维,从分组探究中逐步理解冒泡算法的原理过程。学生通过自主学习、小组合作探究体验计算思维的方法,在解决问题完成任务中理解问题本质及提升计算思维。教师在完成任务过程中理性严密引导,使学生变被动学习为主动学习,积极参与到课堂中来,提高了学习效率。