经典算法课怎么上?

来源 :中国信息技术教育 | 被引量 : 0次 | 上传用户:huiyuanai852
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  浙江省新高考实施“7选3”模式后,技术成为其中的一门选考科目。“算法与程序设计”作为选考的考试内容,难度和广度有所提升,解析、枚举、排序、查找、递归等经典算法变成教学重点。同行们在教学研讨时常会提出一些问题:在学习这些经典算法时,如何让学生真正有效经历分析问题、确定算法、编程求解等计算机解决问题的基本过程,形成科学稳定的知识逻辑结构?是留白程序填空还是让学生自己独立编程?如何通过这些经典算法培养学生解决实际问题的能力?
  2006年高中新课程改革之初,笔者学校就开设了“算法与程序设计”课程,当时也有教学这些经典算法,但由于那时要求不高,教学中教师的引导和指导较多,学生很多时候是靠填空程序来理解的。现在,在深化课程改革思想的推动下,课堂的教学模式和理念有了变革性的变化,以“学为中心”的课堂正逐渐成为新常态,所以,对这些经典算法的教授也应该进一步改进。
  1.设问引入对分查找算法
  上课伊始,我问学生:“有一个数在1~100之间,请大家用最少的次数来猜出这个数。你会先猜几?”学生回答:“50。”“好,这个数在1到49之间,你会猜几?”“25。”“为什么你们最初会猜50,接下来猜25呢?”随后我再扔出一个问题:如果我告诉你这个数是15,按照刚才的逻辑,几次可以猜到这个数呢?与学生交流后,我说:“在刚才的沟通中,其实隐藏着一个非常经典的算法——对分查找。同学们应该能感觉到这种算法的存在,但它究竟是怎样的呢?”
  教学阐析:原来设计课堂导入时,我会展示一件物品,让一个学生来猜这个物品的价格,其他学生根据这个学生猜出的价格提示“高了”或是“低了”。如果学生能在约定次数内猜对这个物品的价格,我就把这件物品“赠送”给他。为了节约教学成本,更快地切入正题,现在的我换了一种导入模式,争取在两三分钟内引入对分查找,同时让学生从互动讨论中预热对分查找的思想。
  第一次查找:范围为d(1)~ d(10),i=1,j=10,mid=int((1 10)\ 2)=5,d(mid)=d(5)=22,key=48,d(mid)  第二次查找:新的数据查找范围为d(6)~d(10),mid=int((6 10)\2)=8,d(mid)=d(8)=45,key= 48,d(mid)  第三次查找:新的数据查找范围为d(9)~d(10),mid=int((9 10)\2)=9,d(mid)=48,key=48,d(mid)=key,找到啦!查找结束!
  在以上的分析过程中,我引导学生思考两个问题:①d(mid)  总结:如果d(mid)  教学阐析:我与学生共同完成第一种情况的分析,并通过两个思考题引导学生聚焦于问题的解决。有了这一过程,学生在接下来的独立分析环节就能把握方向。
  4.分解查找过程中可能出现的第二种情况   假设查找键key=17(如图2),让学生在Excel中画出相应的查找示意图,并思考:当d(mid)>key时,新查找的范围在哪里?i和j如何变化?学生经历的思考过程如下:
  第一次查找:范围为d(1)~ d(10),i=1,j=10,mid=int((1 10)\2)=5,d(mid)=d(5)=22,key= 17,d(mid)>key,确定接下来要找的范围是数据序列的前半部分。
  第二次查找:新的数据查找范围为d(1)~d(4),mid=int ((1 3)\2)=2,d(mid)=d(2)=15,key=17,d(mid)  第三次查找:新的数据查找范围为d(3)~d(4),mid=int((3 4)\2)=3,d(mid)=d(3)=17,key=17,d(mid)=key,找到啦!查找结束!
  总结:如果d(mid)>key,新查找范围为上半部分,i值不变,j=mid-1。
  教学阐析:学生模仿第一种情况,自主经历问题的分析过程,厘清第二种查找情况的原理,得出i、j的变化规律。有了第一种情况的“导”,学生对第二种情况的“学”就能更有效,这样既发挥了教师导的作用,又培养了学生自主学习的能力。
  5.分解查找过程中可能出现的第三种情况
  假设查找键key=20(如图3),让学生在Excel中继续画出相应的查找示意图,并思考:在什么情况下查找会结束?继续进行重复查找的条件是什么? 学生经历的思考过程如下:
  第一次查找:范围为d(1)~ d(10),i=1,j=10,mid=int((1 10)\2)=5,d(mid)=d(5)=22,key= 20,d(mid)>key,确定接下来要找的范围是数据序列的前半部分。
  第二次查找:新的数据查找范围为d(1)~d(4),mid=int((1 3)\2)=2,d(mid)=d(2)=15,key=20,d(mid)  第三次查找:新的数据查找范围为d(3)~d(4),mid=int((3 4)\2)=3,d(mid)=d(3)=17,key=20,d(mid)  第四次查找:新的数据查找范围只有d(4),mid=int((4 4)\2)=4,d(mid)=d(4)=18,key=20,d(mid)≠key,最后只剩一个数据时,还是找不到,说明数据不在这个序列里,查找结束。
  总结:①找到了查找会结束。②在i<=j时重复查找,如果还是找不到,查找也会结束。
  教学阐析:在教师的宏观把握下,学生通过对渐次递进的三种情况的分析,主动把握住了对分查找实施的具体过程。同时,教师要明确的是,除了要总结出i、j的变化规律,什么时候查找会结束也是这节课的重难点。因此,让学生思考查找结束的情况也应该在分析问题的过程中及时介入,这样在接下来编写循环结构的判断条件时,学生的思考就有了落脚点。
  6.对各种情况进行归纳总结
  通过以上三种情况的分析,我们可以归纳如下:
  (1)key与d(mid)的大小比较影响i、j取值的规律:
  i的取值规律:如果d(mid)  j的取值规律:如果d(mid)>key,那么j=mid-1。
  (2)继续进行重复查找的条件:i≤j。
  教学阐析:虽然前面分步提到了这些信息,但是课堂中很有必要整合这些结论,让学生从宏观上形成一个完整的知识结构。当然,教师不要一下子呈现这一知识结构,要引导学生自己表达。
  7.用流程图来描述对分查找算法
  教学阐析:教师不要一下子全部展示这个流程图(如图4),而应逐渐展开,在关键点上留白让学生口头填空。
  8.对分查找算法程序实现
  接下来,为了让学生聚焦到学习重点,我事先设计好了程序界面窗体,并生成了100个升序数据,学生的中心任务就是全心全意完成对分查找程序(如下页图5)。经过编写、调试、思考、改进和教师旁白引导、个别指导,绝大部分学生在20分钟内都能编写出完整的对分查找程序。
  教学阐析:通过前面的铺垫分析,学生形成了清晰的问题解决逻辑结构,再加上一段时间学习养成的良好编程基本功,学生最终独立编写出了程序。以前由于担心学生没法完成这个任务,所以采用留白填空的方法。实践证明,如果教师有较好的教学规划,有培养学生自主学习和独立思考的意识,学生肯定能一次一次地坚实成长。
  9.提升、巩固和总结
  完成的学生把升序序列改成降序序列后再改动对分查找程序,同时研究对分查找最多的查找次数,最后通过几个选择题加以巩固。如果有时间,教师可以适当提升对分查找算法的实际意义:设想一下在一个有一百万个人名的电话簿中找一个名字,对分查找可以让你不超过21次就能找到指定的名字。如果你将世界上所有的人按照姓名排序,那么你在35次以内就能找到任何人。对分查找的实际应用价值还有哪些呢?下节课待续!
  教学阐析:为了让学生充分内化对分查找算法,第二课时《对分查找算法应用》通过对分查找在求解高次方程实根等多个具体问题中的运用进一步巩固对分查找知识。
  课堂综述
  这节课没有先声夺人的情境铺垫,没有气氛热烈的小组合作,没有滔滔不绝的教师讲解,更多的是教师严密理性的引导和学生被激活的思考和实践。为了给学生充分的思考和实践,每个环节都不容拖沓,每个点都需无缝对接,这就需要教师精心备课,去除冗余语言,精心准备各个资源,把时间挤出来给学生自主学习。例如,在原来的教学设计中,学生是在纸上画数据序列变化情况,现在我让学生在Excel中进行研究,并事先输好数组元素和数据初始序列;在学生编程环节,窗体和数据序列都已经给学生准备好,学生只需把精力投入到对分查找的主体程序上。这样做的目的是让学生充分聚焦到学习重点上,让时间有限的一节课变得更有效,实现教学目标的最大化达成。当然,这些都是课堂背后的故事;上课时,教师则不要为了赶时间而语焉不清,不要为了赶进程而压缩需要充分思考的时间。特别是在编程实践部分,教师更需要让学生静下心来,在一个松弛的环境中研究,而不要在旁边说话“影响”学生,如“时间不多了,大家快一点”“有些同学已经完成任务了,没完成的同学抓紧时间”等。
  观点总结
  教虽无定法,但在经典算法教学时,我建议教师们把握这样的指导思想:减少形式主义的情境堆砌和华丽铺垫,多些实实在在的学习指导;教师切忌讲太多,要想方设法让学生真正亲历解决问题的全过程。教师在算法形成过程中可以引导学生,但在编程环节最好让学生独立编程。如果学生基础整体较弱,可以留白给学生填空,但是前面的分析过程还是要让其参与进来,而不是直接告诉他们“是什么”,应与他们一起走过“这是怎么来的”学习过程;如果学生基础较好,可以减少教师引导的部分,给学生更多自主思考和编程的时间。另外,教师备课时一定要建构清晰的知识结构,再通过配套的实际应用课,来提升学生用经典算法解决实际问题的能力。更重要的是,在“算法与程序设计”的基础学习阶段,教师要夯实学生的编程规范和基本功,一开始就让其养成独立编程的习惯,这样学生才能形成后续学习的良性循环。
  经典算法课怎么上?一言以蔽之:摒弃形式主义,让思考、学习和实践真实地在课堂中发生!
其他文献
● 引言  《数据结构》这门课程对于大多数初学者来说十分抽象,枯燥无味,尤其是实验内容里面关于各种数据结构的算法程序较以前学过的程序设计内容更复杂,也不容易被理解,学生学起来十分吃力,所以我们希望有一种工具辅助实验教学,使抽象的内容形象化,改善实验教学环境,并使学生加深对程序的理解,提高学生学习的兴趣。  基于以上两个原因,我们开发了智能化数据结构实验教学辅助演示系统,它可以满足学生的这种需要,把
微课程教学法教学模型的第一模块 第二模块,即自主学习任务单 配套教学资源,构成翻转课堂的课前自主学习阶段。  课前自主学习质量,是翻转课堂能够成功的必要条件。这是因为,翻转课堂是一种以“学习知识主要在课外,内化知识、拓展能力主要在课堂”为基本结构的学习方式(或曰教学方式、教学模式、教学形态),其目的在于发展应对未来挑战必备的核心素养,提升教学质量。  翻转课堂包含课前自主学习和课堂学习两个阶段,课
一个偶然的机会,人们发现两岁多的印度穷孩子布迪亚是个长跑天才。经过艰苦的训练,布迪亚迄今为止参加了6次大型赛事,成为印度的一名长跑小英雄。然而,就在名声和财富向布迪亚招手的时候,这种拔苗助长式的训练使他走向了毁灭。2006年的5月2日,布迪亚向7小时不间断跑65公里发起了挑战。挑战虽然成功了,可精疲力竭的布迪亚却摔倒在地,被送进了医院。  体检结果出来了,布迪亚不但营养不良、贫血,而且长跑3天后血
编者按:“让每一个学生在自己的‘最近发展区’内得到不同层次的发展”,这是信息技术教师所面临的严峻课题。针对这个课题,“差异化教学实验区”里的林大锋老师、周玳珈老师和蔡海斌老师正在紧锣密鼓地研究、探讨、解决差异化教学的策略。面对差异化学习个体采取的“分层递进式教学”的最终目标是缩小差异,同时促进个性与能力的发展、促进人的和谐发展。在下一期,我们还将在本期的基础上,用实例来证明“分层递进式教学”的实际
教材是课堂教学中最基本的教学工具。但如果教师只是照本宣科,而不关注学生现有的知识水平,则达不到预期的教学效果。因此,从以学生为主体的角度出发,对教材进行深度剖析、重构教材、创造性地使用教材就显得十分必要。笔者参加了第十三届全国中小学信息技术创新与实践活动教师赛项中的网络教研团队赛项,组委会提供的是人教版初中信息技术教材。在对不熟悉的教材进行分析解读、设计教案的过程中,笔者深刻体会到创造性使用教材的
目前国家开放大学的课程及学习资源建设规划、建设过程及应用等方面的管理处于人工管理模式,无法将规划、在建和现有的课程及学习资源情况统一在一起,也无法将全国系统内的教师和参与课程及学习资源建设的知名教授、专家学者资源汇集在一起,更无法提供各分部、各类人员共享、连用的软件系统,这些问题制约着国家开放大学课程及学习资源管理和应用,以及共建、共享机制的发展。因此,设计出一个有效的教学资源信息管理系统变得十分
摘要:现阶段,高中音乐在高中教学中的作用越来越重要,只有各方面能力综合发展的学生才能满足社会不断地发展的要求。高中音乐教学应当与时俱进,充分发挥多媒体技术在高中音乐教学中的作用,实施音乐教学与信息教学的有效整合,通过教学探索来改革音乐教学的模式,以此来提升教学的品质。  关键词:信息化技术高中音乐音乐素养  中图分类号:G632文献标识码:A文章编号:1674-2117(2014)02-0127-
摘 要:通过在实际教育管理中所发生的一个案例型故事,对学生中普遍存在的抄作业现象,笔者以拒绝诱惑为主线激发学生自我控制的意识,以多媒体内容展示为辅助手段启发学生对抄作业的思考,与不良现象做自觉长期抵制,避免靠教师的紧盯、严管这种被动的管理方法。  关键词:爱生故事 拒绝抄作业 诱惑  中图分类号:G632 文献标识码:A 文章编号:1674-2117(2014)04-0128-02  在从事多年的
自2008年第3期开始,《信息技术教育》杂志正式更名为《中国信息技术教育》杂志。作为该杂志主办单位之一的中央电化教育馆的成员,我感到由衷高兴。我认为,更名的蕴意,不仅仅是名称的变化,也蕴意着自2000年提出的“大力普及中小学信息技术教育,大力推进中小学信息技术建设”,在我国得到充分发展和肯定。  中国中小学信息技术教育的普及与推进,自2000年起已历经八年。有幸作为一名直接参与者和亲历者,八年路程
“热力环流”翻转课堂教学是笔者作为上海圆创教育“智慧教学与翻转课堂实践研究”项目专家团队成员,于2015年9月24日在武汉市常青第一中学参加“示范引领与教学研讨”地理同题异构,并按照当地学校教学进度执教的公开教学活动,教学时间为40分钟。  在这次公开教学活动中,笔者努力贯彻“让学生按照自己的步骤学习”的翻转课堂理念和微课程教学法“三大模块、导学一体”理论,从教学设计到教学策略调整,始终坚持以学生