信息学奥赛所涉的内容多、难度大。例如noip复赛的难度就远超过现行大学程序设计教材中的所有例题和习题,其中有相当一部分题目是新编的,在任何参考书上找不到,在解题过程中还涉及许多数学方面的相关知识。
所有这些对于一个中学生来说的确是早了点,也就因为这一个“早”字决定了信息学奥赛的特点,中学信息学奥赛要取得成效不可能一蹴而就。由于中学生在知识层面上的不足,信息学奥赛所要用到的许多数学知识和英文单词需要另行教学;中学生的思维能力相对薄弱,对一个程序的理解能力不深,在培训教学中不能操之过急,要循序渐进。在教学中我采用的办法是浅入深、由简到繁、由易到难,分层展开,及时检测知识掌握程度,使知识的传授更有效。让学生不知不觉中学到知识的新的教学思维和方法。
一、激发学生学习兴趣,让学生喜爱信息学奥赛
爱因斯坦说过:“兴趣是最好的老师”。在信息学奥赛辅导中程序设计一直都是重难点,由于计算机语言本身的高度抽象,枯燥无味,如果学习没有兴趣,会导致他们很快对程序编写丧失热情,并且在学习的后期是非常需要学生自身热情的支持。因此,信息学奥赛培训是一项系统工程,在这个系统工程里,抓普及、提高学生兴趣是前提。
例如,我教过的一位同学,计算机操作比较熟练,尤其是对计算机游戏感兴趣,谈起电脑游戏是眉飞色舞,几乎已达痴迷程度。我仔细思考了一下,他既然对游戏如此痴迷,头脑反应快,是学习编程序的一块好苗子,很可能对计算机程序设计感兴趣,我拿一个游戏程序给他操作,然后把该游戏程序代码给他看,并告诉他游戏是由程序编制出来的,问他想不想自己来编写游戏,通过引导慢慢地他的兴趣就转移到学习程序设计上了。从单纯玩游戏到学习程序设计,使他对计算机的学习有了质的飞跃,促使他一步一步地走向成功。可见,在学习过程中兴趣是产生学习动力不竭的源泉。
二、注重传授知识的体系
在课堂教学中,根据教学过程的循序渐进原理。我的做法是在编程的初级阶段,以简单程序为主,避免听不懂或理解困难而影响学习效果。对于较难的问题,我会先把问题细化,将一个知识组块分成有层次有梯度的几个小的知识组块,让学生知道先学会什么,接下来学什么。比如在讲授“动态规划”的时候,因为之前学生学过贪心法解决问题,所以先抛出一个问题“采药”(noip2005)让学生思考,如何解决0/1背包问题?贪心法能完美解决吗?不行的话,怎么办?这些问题能让学生产生心理缺口,学生必然产生学习新的算法的兴趣与欲望。接下来,再引导学生学习动态规划算法,给出以下几个有层次有梯度的小的知识组块:
1、多阶段决策过程的最优化问题如何解决?
2、什么叫“动态规划”?
3、动态规划适合解决什么样的问题?
4、为什么要用动态规划法解题(0/1背包问题、数字三角形问题)?
5、怎样用动态规划法解题?
6、用动态规划法解题的一般模式。
7、典型例题与习题。
8、如何改进动态规划算法?
9、归纳总结,将题目分类。
这样学生可以根据教师指出的知识组块,由浅入深的进行学习,让学生掌握动态规划。
三、 因材施教,分层教学
分层教学应本着为各类学生提供最优质服务的思想出发,给学生提供各种选择的机会,不要把着眼点局限于在一定时间内提高学生的考试成绩上,而应从长远考虑,从培养学生学习的兴趣、养成良好的学习习惯、掌握适合自己的学习方法上下功夫。分层教学的尝试对于我或者大家来说都是很辛苦的,可是我觉得这是让每个学生都有一条合适的学习路径,不致于使低层学生因台阶过陡而滋生惧怕心理甚至失去学习信心,也不致于使高层学生因学习台阶过缓而滋生骄傲情绪甚至丧失学习兴趣,这样才能使每个学生都乐于学习,勤于钻研。在教学时,我会把我的学生分成几组,成绩好的、领悟能力强的学生一组,其它一般的,领悟能力要弱一些的学生一组,讲课时,针对不同组的学生给予不同难度的教学,举一个简单的例子,如讲解阶乘运算时候,对能力强的一组学生,我就会把数据定义的很大,对能力相对较弱的一组,我会把数据的范围定义的在整数所能承受的范围。
我上课时,经常不会采用一种固定的方式,有的时候我会讲,还有的时候,我会叫成绩好的、领悟能力强的那组学生上来讲,有时学生讲课的效果要强于我的,可能我讲了半天学生都没有理解的问题,学生用他们自己的语言跟学生一讲,竟然明白的很透彻,效果比我讲的要好的多,那是因为学生和学生之间年龄差不多,对问题的想法也差不多,他们有时可以用一种更直观,更简单的想法把一个复杂的问题简单化。所以更多的时候,我是把问题提出来,问“为什么”,“怎样做”,让学生多参与思考与交流,鼓励学生踊跃提出自己想法与见解,“问题”越多,学生自我提升的空间就越大,学生与教师间交流机会就越多,也使得教师更加了解学生,了解学生间个体学习思维上的差异性,让教师更好地做到因材施教。
四、提高课堂效率,精讲多思
竞赛的重点、难点、关键点与学生困惑或容易错的地方详细讲解,其它知识略讲。学生可自学的不讲,让学生自己去阅读理解掌握,次要问题少讲,点拨启发、提示,坚决杜绝满堂讲。例如,在教授算法设计这一章节,回溯算法是难点。开始时,不讲回溯算法的定义,而是让同学们玩迷宫游戏,同学们在玩的过程中知道遇到障碍要退回,重新找其它可行的路径,直到走出迷宫,这就是回溯的原理。一个抽象、难以理解的概念在学生活动中学会,提高课堂的学习效率。平时做题的时候,课本上的经典例题学生理解不了,也一定要他背下来,然后配合同类型例题练习,让他有足够的时间思考,等到他慢慢就会理解的,这个时间可能很长。我讲解回溯问题的时候,就用了半个学期,正所谓每天一小步,合起来就会向前迈进一大步,靠近目标也就更近一步。学生才能真正掌握、理解这种算法,才能找出该算法的优缺点,才能在合适的情况下使用该算法。
虽然在我从事培训工作短短的4年里,在竞赛中也取得了一些成绩,但我认为奥赛培训只能针对学有余力,热爱计算机科学的优秀学生。竞赛拿奖并不是奥赛的最终目标。学生、老师、家长都要有这样的意识,我们应该站在更高的层次,真正为了培养学生能力,为了学生的成长而进行奥赛培训。引用《劝学 荀子》一句话:“不积跬步,无以至千里;不积小流,无以成江海。”同参与信息学奥赛培训的师生共勉。