加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

迭代算法教学记录和反思2--实际上课情况

(2022-04-12 14:54:14)
分类: 研究-学习
迭代算法的教学内容准备好后,我自我感觉还是不错的,因为加了累加循环的简单迭代的例子,并且还想到了制作毛毛虫时的1和 整体的关系,以及在推算月份与兔子数量关系的过程、如何设计出能够让计算机实现的算法思路(迭代的介绍,里面好像有了点“计算思维”的影子)。
第一节上课的班级是1班,这是个理科班级,但学生层次差异较大,不少学生上课会不由自主地走神做小动作,玩空当接龙、扫雷和象棋小游戏的同学总是制止不住,即使站在旁边再三提醒效果也是一般,课上纪律也难维持(反过来也说明我的上课方式不适合这样的学生,需要调整)。
我的第一个任务就是让学生利用学习过的知识完成100内的整数进行累加求和的程序设计,本来只是个热身小活动,但是五六分钟下来真正能够做出来的也不到十个同学,这一步就算卡了壳,因为还有重要的知识需要学习,无赖我只好继续推进课堂。介绍毛毛虫的例子,说到迭代,学生们好像没啥感觉。那就直接进行到斐波那契数列的介绍中吧。
列出 1  5 8 ……,不少学生还是没有看出来规律,那就到兔子序列的一步步推演中吧。我介绍了一只幼年兔子经过一个月后就能变成成年兔,每个月都能生出一对小兔子,成年兔也是每个月都生下一对小兔子的规则。【前面读到一篇文章,课堂上老师要有幽默的语言才能吸引学生足够的注意力,这里面可以发挥一下。】接下来就是一个个数据推算,算出了8个月内每个月的兔子数量。在这个过程中学生也基本发现了规律,知道每个月兔子的数量是前两个月兔子数量之和。
接下来开始了我后来认为是失败之一处的程序设计分析【环节问题】,是在excel中完成的。就是设定第一个月和第二个月的兔子数量分别为f1,f2,则第三个月就可以用f1+f2来表示。那第四个如何表示呢?同学们自然会想到用第二个月的f2加上第三个月的f1+f2,这时提醒同学们,这样的计算方式到后面会越积越多,而计算机是不擅长进行这样的计算的。那怎么办呢?【好像有一点点体现出计算思维的影子了】
因为计算机比较擅长于循环,那我还想把第四个月的值设为与前面相同的f1+f2,那么此时,第二月本来的实际值f2就要赋给f1,第三月的f1+f2就可以赋给f2,即f1,f2=f2,f1+f2,这样就可以实现循环了。
讲到这个地方,发现全班绝大部分同学都有了如坐针毡的感觉,不少学生趴下来了,有学生无所事事的扒拉着键盘【事后发现竟然有两个学生真的把计算机键盘扣下来调换了位置,在谴责学生的同时,其实这也是自酿的苦果啊。下一节课学生发现后,我在复原键盘的事后一个不小心把左手食指的指甲盖别了一下,当时就疼的厉害,不一会儿发现小半边指甲淤青了】。在这个过程中,虽然我觉得自己讲解的还算是思路、调理都有,但在找寻与学生的互动时,目光所及之处只发现有一位同学有所反馈,也就是他大概听懂了,其他同学没啥反应。我意识到我的这节课是失败的。虽然我也设身处地地跟学生坦白,老师也是反反复复学了两三遍才把自己的思路锊清楚了,第一遍理解不了很正常,后面等再有机会时再给大家介绍一遍时效果就会好一些了。但,扪心自问,哪儿来的学时呢?
接下来给学生提供成品的迭代算法求斐波那契数列的程序实例,让学生对照代码输入运行。这个学生比较在行,虽然没搞懂程序的思路,但对照着输入代码还是可以的。运行成功后让学生尝试着修改月份值,比如十年后,m=120,这时的结果是巨大的,学生都感到很惊讶,都在乐此不疲的修改着数据并进行验证。沉闷的课堂总算找回了一点生机。
课后感觉很苦恼,准备了那么长时间、花费了很多精力的课堂,最终学生的掌握情况却不尽如人意,问题到底出在哪里、该如何解决呢?
其实问题在课的一开始就发现了,学生的基础不扎实,没有一定的知识积累,所以完全get不到这个迭代程序的魅力。
如何解决呢?甚至都有了放弃这部分内容教学的想法:学生没有学习这个知识的基础,更没有学习这个内容的热情,短时间内很难改变,与其”讲了学生也不想听、听不懂“,还”不如不讲“。
下一个班的这节课还隔着两天,而且他们虽然是文科班,但学生都较有灵性,学习的习惯较好。因此我还是非常寄希望于这一次的。
此外,我发现“推算fib表格中的数据--迭代算法分析--代码验证思路”这样的教学思路,不太适合低基础的学生,导致的后果就是把学生越讲越晕。课堂低效。
因此考虑改变一下教学顺序,在介绍了fib表格数据推算后,就给学生呈现迭代法求fib数列的程序代码,让学生来猜测一下各行代码所表达的意思。【这里面还是要铺垫下a,b=3,4表示a=3   b=4的知识】,然后找学生站起来说一说。学生看到循环,基本能够说出大概的意思,不过前两行f1=1  f2=1他们却没有正确理解。
在学生对程序实现有了大概的了解之后,再回过头来分析f1,f2=f2,f1+f2,如何迭代实现。学生听完这样的思维过程后,应该会有“恍然觉悟”的感觉吧。
在实际给9班上课时,第一个环节100之内的累加学生就做的非常好,大部分都能够独立完成,我想这也是一个学习的基础,有这样的基础作为铺垫,我也更有信心了。
在介绍fib数列的迭代部分内容,我按照事先调整的策略进行授课,发现学生的掌握情况较好,最起码很少发现思路难以畅通的情况出现。学生接受的顺利了,教学进度自然也就快起来了。
我还利用课上最后大约8分钟的时间向学生简要介绍了辗转相除求最大公约数的思路分析,让学生去结合给点的程序代码验证下程序的功能,可惜因为时间的关系,只作了简单介绍,学生没有来得及实践。不过但从学生的学习表现来看,这节课的学习至少是“不拒绝”的。
分层教学,不仅仅是停留在思想上、口头上,也要实实在在的体现在实际课堂教学的落实中。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有