张 丽
作为我国基础教育“五大学科奥赛”之一的信息学奥林匹克,是一项充分体现学生综合素质和能力的活动。信息学奥赛融合了“思维性与实践性”、“开放性与基础性”、“独立性与合作性”等众多要素,这些极具挑战性的特征极大地激发了优秀学子的参与热情,让许多思维敏捷的学生迷醉其中。
我从事这项工作已有一段时间,但相比于信息学奥赛的博大精深,我从中的感悟也只是“沧海一粟”,在这里与同行交流切磋。
选择培养对象
程序设计对人的能力的要求是比较高的,也是多方面的,编程者不仅要熟悉计算机语言功能,要有娴熟的编程技术,还要具备扎实的数学基础和算法知识以及相应的实践能力、创造能力。为此,每一届的辅导都非常重视对优秀学生的选拔,以中考的成绩尤其是数学成绩为衡量标准。我校的奥赛班招收几十人,先从Pascal语言开始辅导,从基本的语句、三种程序结构,至数组、过程和函数等内容,逐渐深入。这一阶段主要是让学生学会使用Pascal语言,理解结构化程序设计的基本思想和方法。在这一阶段,一部分学生接受不了这种枯燥、乏味的程序,自然被淘汰。
建立资源库
把与信息学相关的资源放入资源库,方便教师和学生获取相关资料。比如,竞赛的规则制度,考试要求掌握的知识点,历年竞赛试题,测试数据和解题报告,江苏省夏令营、冬令营教师的讲稿,各种算法的试题等。这些资源分类存放,方便学生查找。
信息学奥赛所涉及到的知识除了系统的数据结构和算法外,还有其他很多相关的知识,如解题思路及策略、常用算法的优化、特殊的解题思想、一些省队或国家集训队的论文等,这些知识既不是系统的,也不是紧密相关的,往往是一些分散的知识和经验。在机房服务器上提供一个平台,师生可将自己的或搜索到的资源上传,方便大家随时浏览学习。
制订培训计划
结合信息学奥赛大纲规定的基本要求,以及面对的学生的水平定位,制订培训计划。培训计划详细而具体,不仅要考虑每一阶段的培训要求,而且要考虑每次培训的内容。培训计划的制订可以从整体上把握每次培训的内容应占的地位以及与其他知识的纵横联系。
实施辅导策略
信息学奥赛开放性很强,涉及的知识面广,难度大,学生在学习时具有一定的自由度,没有固定的前后顺序,而且学生基础参差不齐,接受程度也不一样,根本无法按照正常的进度来上课。所以刚开始辅导时总觉得摸不清头绪、无章可循、难以把握,后来经过一个阶段的摸索,实施如下策略。
依据几年的经验,我对信息学奥赛所涉及的知识进行整理,以数据结构知识为主线,把奥赛要求掌握的基本算法融入数据结构中,帮助学生掌握相关知识。信息学奥赛辅导知识脉络图如下图所示。
为提高学生学习效率,注重自主性学习,辅导过程强调学生的主体性,以学生自主学习为主。在讲解数据结构基本知识时,让学生利用所建的资源库自主学习,教师只是起到一个反馈补救的作用。而对穿插在数据结构中的各种基本算法的讲解,教师可采用“扶”、“推”、“放”、“再扶”、“再放”五个步骤。下面我仅以宽度优先搜索算法为例,说明实施五个步骤的具体过程。
扶:以一道宽度优先搜索经典例题引路,如“求经过最小城市的路径”,借助于图表、图示等多种方法帮助学生理清其数据结构队列这一知识点和宽搜算法思想,并给出具体的程序代码。
推:通过典型例题的讲解,让学生总结出宽搜算法解决问题的算法框架。进一步给出其他宽搜算法的典型例题比如“迷宫问题”,从这一阶段起,教师可依据需要仅提供算法思想,不再出示程序代码。先放手让学生思考能否用宽搜去解决,如何借助宽搜的算法框架去解决,具体程序各个细节该如何处理。
放:学生对宽搜算法已经有了一定了解,但许多细节仍需进一步思考才能解决问题,教师放手让学生完成资源库中的典型例题,这一环节学生每做一道题都会有这样或那样的困惑,鼓励学生互相交流、互相探讨。每完成一道题,教师可以鼓励学生谈谈自己的感受及要注意的细节,这样做的目的一方面便于学生整理思路对算法进行内化,另一方面对其他学生也是一种启示。有的题目,学生找不到思路,或做了一半做不下去了,教师对于这种情况也可以拿来展示,让其他同学为其提供思路。
再扶:在这一阶段加大学生做题的难度。例如,学生在用宽搜解决问题时,发现题目中有的测试数据能过,而有的测试数据超过时限1S,如何解决呢?引入双向宽搜的知识。这一阶段,教师只提供算法思想,给学生提供足够的时间,学生自己思考、讨论、尝试完成。最后,教师可提供标准算法和标准程序,供学生对比优劣,取长补短。
再放:提供在线测评系统。目前,国内、外有许多提供在线评测系统的信息学奥赛网站,如USACO、VIJOS、URAL等,给学生的自评带来了许多方便。放手让学生自己在在线评测系统的题库中“挑”题来做,首先应该让学生学会怎么“挑”,挑哪些题能帮助自己打开思路,挑哪些有思路但还需进一步思考才能解决的问题。
注重实战训练
信息学奥赛与其他学科奥赛相比除了语言这个因素外,基本上是类似的,考查的主要是学生的思维和解题能力。要想培养学生的思维,提高学生解决问题的能力,学生必须有一定的做题量;学生要想在奥赛中取得好成绩必须熟悉信息学奥赛考查范围内各种类型的题。而我发现,学生在平常的练习中专注度不够,做题的效率也很低,所以每一阶段培训内容结束后,我就搞一次阶段测试,实战模拟省奥赛那样的环境,限定时间完成。每一次模拟赛后,都会花费点时间组织学生作赛后总结,分析错误的原因,总结自己的经验及教训及以下一阶段的学习中应注意的问题及期望。
在信息学奥赛正式比赛之前,学生每天都会做这样的实战模拟,在赛前并不一定非要找一些新题、难题、怪题,许多赛前的题目就是训练过程中做过的各种类型的典例题,目的就是让学生温故知新,进一步巩固基本算法。
信息学奥赛培训的困惑
家长支持不够。许多教师和家长都希望学生去参加一些和高考科目相关的奥赛,即使没有获奖,对高考的成绩还是有一定帮助的。而信息技术学科不是高考科目,若是在高中阶段没有取得信息学奥赛奖项,很多家长认为白白浪费了学生的时间。
培训时间不足。信息学奥赛是一项高难度的竞赛活动,不花足够的时间、精力是不可能出成绩的。而高中阶段的学生,学习任务重,高考压力大,学生能花在奥赛的时间和精力有限。
由于小学信息学奥赛的取消,在我们地区小学阶段开展信息学奥赛活动的学校很少。而初中阶段的学生没有基础,初中教师也就缺少动力,所以近几年来进入高中阶段的学生,很少有接受过程序设计系统培训的。若高中段的学生是从零起点开始培训,入门就会显得特别吃力。有一些其实是很优秀的学生,只因为老师急于让学生入门而迫使学生被淘汰出局。若学生在初中阶段已经系统地学习过程序设计和一些初步的算法,那在高中段的信息学奥赛的学习便会很轻松。
信息学奥赛辅导难度大,依据个人的力量很困难,所以我希望能有更多的机会与其他学校、教师交流,以便吸取、借鉴优秀经验。这对辅导教师和学生而言都会起到积极的促进作用。