论文部分内容阅读
【摘要】在部分地区,信息学奥林匹克竞赛培训存在认识上、组织上、方法上的一些误区,经过八年信息学奥林匹克竞赛培训,我认为基于正确认识的前提下,通过做好培训的组织与选拔,运用恰当的方法,培养学生良好的学习习惯,掌握科学的测试方法等策略,可以提高信息学奥林匹克竞赛培训的效率,提升学生的能力。
【关键词】高中信息学 奥林匹克竞赛 培训策略 效率
青少年信息学奥林匹克竞赛旨在广大青少年中普及计算机教育,推广计算机应用的一项学科性竞赛活动。为促进计算机普及并兼顾提高,从95年开始全国举办信息学奥林匹克竞赛分区联赛,通过学习竞赛使一大批学生在逻辑思维、分析问题解决问题等多方面得到锻炼与提升。通过近几年担任学校信息学奥赛指导教师,现就如何认识、组织、辅导学生谈谈自己的一些体会。
1.正确认识信息学奥林匹克竞赛
1.1 信息学奥林匹克竞赛是实施素质教育的大课堂。
个别重视升学率的家长或学校认为,信息学不是高考科目,参加信息学奥林匹克竞赛会浪费时间,影响孩子的学习,因此不赞成学生参加信息学奥林匹克的学习与竞赛,有的甚至及力阻止学生学习相关知识。殊不知,通过分析问题、设计算法、编写程序可以使学生的逻辑思维能力、创新能力、动手实践能力等多方面能力得到充分的发挥,是实施素质教育的一个绝好途径。
1.2 正确认识参加信息学奥林匹克竞赛的目的。
在某些地区或学校,学生参加信息学奥林匹克只是为了获取保送资格,许多头脑发热的家长不惜重金把学无余力或对信息学奥赛根本不感兴趣的孩子生生塞进了奥校的教室;一些不负责的学校甚至利用大量课时进行Pascal语言的讲授,不仅使学生在课堂教学之外接受更多让他们身心俱疲的灌输也违背了我们开展信息奥林匹克竞赛的初衷。举办NOIP、NOI和IOI是为了通过学习程序设计培养学生严谨的思维、坚韧的意志、良好的团队合作精神,真正做到学会做人、学会做事、学会求知、学会健体,因此不少专家提出了要正确认识参加信息学奥林匹克竞赛的目的。我个人也认为:要正确把握好普及与提高的关系,参加培训或竞赛名次是次要的,最主要的通过这样的过程使学生的能力得到提升。
2.做好培训的组织与选拔
信息学奥林匹克竞赛分为NOIP、NOI、IOI,其主要目的也是兼顾普及与提高。通过我们近几年开展信息学奥林匹克培训发现,即使学生在竞赛中没有获奖,但学习行为,学习习惯,思维习惯都较参加培训前有了提高,并且分析问题、解决问题的能力也有所提高。因此,在培训时不应该限制条件,也不能强迫学生参加,只要学生感兴趣,都可以无条件的参加培训。首先做好普及,然后选拔优秀,并且要平等对待每一个学生。不能单纯以获奖为目的,只顾几个优秀的学生,使大部分同学对此项活动失去信心。
3.运用恰当的培训方法
参加信息学奥林匹克竞赛需要学习程序设计语言、数据结构、算法及组合数学等知识,这些知识都是本科生或研究生的课程。如果按照我们上大学时的方法给中学生培训,必定会使学生感觉学习乏味并难度太大。因此,在给中学生培训时,应采取适合中学生的方法。
3.1 激发学生学习兴趣。
兴趣是最好的老师,在培训中可以以某个有趣味性的实例为先导,进而提出问题,引导学生思考,通过学和做去完成任务。恰当的教学任务不仅可以提高学生解决问题的兴趣与欲望,同时还可以培养学生独立思考问题的能力和创新能力,增强学生解决问题的能力。
实例的选取要注意两个方面:(1)趣味性;(2) 要贴近实际生活让学生觉得学而有用。以此激发学生的创作兴趣和学习热情。
在设计实例时要以兴趣为主线,以实用为载体,以针对性为度,以培养学生能力、发展学生个性为目的。 比如在讲解程序设计语言中循环的嵌套时,可以用百钱买百鸡实例。
3.2 使用多种学习方法。
清华大学吴文虎教授曾指出,“现在计算机的知识更新很快,新的操作方法、新的技术层出不穷,要了解和掌握,靠教师教根本教不过来。”因此,我们搞培训只能把基础知识与方法教给学生,教师起指导与点拨作用之后就靠学生通过自学、上网学习交流、讨论等多种渠道与方法进行学习。
比如因特网,现在网上关于信息学奥林匹克竞赛的学习资料非常多,并且有论坛等进行交流的平台,有很多金牌选手也参与进来,可以给学习者一个相互交流学习的机会。
4.培养学生良好的学习习惯
很多专家指出,提高学生编程的正确率必须要培养学生有一个良好的编程习惯。包括:
4.1 规范地书写程序。我们书写程序时要使用缩进格式,不同层次的语句向后缩进若干格,这样可以保证程序尽量少出语法错误。另外,命名变量名时应尽量有一定意义,增加程序的可读性,调试程序时也方便。但是不要把变量名起得太长,这样会影响编程速度,可以使用一些简短的汉语拼音或英文缩写,只要自己好记就可以了。
4.2 要使用自顶向下分析结构化编程。尽量不使用转向语句,并且将一些独立的功能例如输入、输出功能模块化,这样在调试的时候可以逐模块地检查排错,将一个大规模问题分解成几个小规模问题。但是也不能盲目地将程序分割成太多模块。模块化的依据主要在于程序的内在逻辑。
4.3 正确理解、使用全局变量。信息学奥林匹克竞赛中的程序规模一般比较小,全局变量的使用会很频繁,有时全局变量可以简化编程复杂度,但是全局变量的使用不当也会产生错误,特别是在过程或函数中改变全局变量的值可能会影响整个程序的结果。教学中一定要让学生清楚全局变量和局部变量的区别,全局变量在过程或函数中被修改时对程序的影响,养成学生正确使用全局变量的习惯。
5.掌握测试程序的方法
养成良好的习惯能避免编程中的很多错误,但是这还不足以能保证竞赛中编写的程序能通过所有的测试数据,这是因为竞赛评测时给的标准测试数据都是相当苛刻的,如果程序提交前没有经过充分的测试,很有可能不能通过标准测试数据。学生在参加竞赛时经常会遇到这样的情况:竞赛完了以后感觉非常好,觉得题目不难,而且几道题自己都做完了,都通过了样例数据,但是等成绩出来以后却和期望中的相差甚远。使用标准测试数据测试自己的程序后才发现,不是某些特殊情况没有考虑到,就是犯了小错误,例如变量误用,或者数组声明地太小。很多学生不止一次犯过类似这样的错误,常常因为这样的错误而懊悔不已,原本应该能够拿到的分数却没有拿到。大多数人把这种错误归咎于粗心,其实出现错误是很正常的,无论多么擅长编程的人都不可能完全避免出错。
在竞赛中我们编写完一个题目后自己应该设计多组测试数据来测试自己的程序,从而找到程序中隐藏的错误。题目给的样例数据都非常简单,不能只用它来测试程序。我们需要设计出精巧的测试数据,使用的数量既不多,不浪费竞赛中宝贵的时间,又能够找出程序中隐含的错误。这就需要选手了解测试的方法,如我们竞赛使用的黑盒测试,为了保证程序的正确性还可以结合使用白盒测试法,尽量在最短的时间内找到程序中的错误。
通过几年的努力,我校在信息学奥林匹克竞赛活动中取得了一些成绩,实践证明我们研究的策略是有效的。今后我们还将一如既往地开展信息学奥林匹克竞赛的培训,使更多的学生能通过这一活动,得到提升,得到发展。
【关键词】高中信息学 奥林匹克竞赛 培训策略 效率
青少年信息学奥林匹克竞赛旨在广大青少年中普及计算机教育,推广计算机应用的一项学科性竞赛活动。为促进计算机普及并兼顾提高,从95年开始全国举办信息学奥林匹克竞赛分区联赛,通过学习竞赛使一大批学生在逻辑思维、分析问题解决问题等多方面得到锻炼与提升。通过近几年担任学校信息学奥赛指导教师,现就如何认识、组织、辅导学生谈谈自己的一些体会。
1.正确认识信息学奥林匹克竞赛
1.1 信息学奥林匹克竞赛是实施素质教育的大课堂。
个别重视升学率的家长或学校认为,信息学不是高考科目,参加信息学奥林匹克竞赛会浪费时间,影响孩子的学习,因此不赞成学生参加信息学奥林匹克的学习与竞赛,有的甚至及力阻止学生学习相关知识。殊不知,通过分析问题、设计算法、编写程序可以使学生的逻辑思维能力、创新能力、动手实践能力等多方面能力得到充分的发挥,是实施素质教育的一个绝好途径。
1.2 正确认识参加信息学奥林匹克竞赛的目的。
在某些地区或学校,学生参加信息学奥林匹克只是为了获取保送资格,许多头脑发热的家长不惜重金把学无余力或对信息学奥赛根本不感兴趣的孩子生生塞进了奥校的教室;一些不负责的学校甚至利用大量课时进行Pascal语言的讲授,不仅使学生在课堂教学之外接受更多让他们身心俱疲的灌输也违背了我们开展信息奥林匹克竞赛的初衷。举办NOIP、NOI和IOI是为了通过学习程序设计培养学生严谨的思维、坚韧的意志、良好的团队合作精神,真正做到学会做人、学会做事、学会求知、学会健体,因此不少专家提出了要正确认识参加信息学奥林匹克竞赛的目的。我个人也认为:要正确把握好普及与提高的关系,参加培训或竞赛名次是次要的,最主要的通过这样的过程使学生的能力得到提升。
2.做好培训的组织与选拔
信息学奥林匹克竞赛分为NOIP、NOI、IOI,其主要目的也是兼顾普及与提高。通过我们近几年开展信息学奥林匹克培训发现,即使学生在竞赛中没有获奖,但学习行为,学习习惯,思维习惯都较参加培训前有了提高,并且分析问题、解决问题的能力也有所提高。因此,在培训时不应该限制条件,也不能强迫学生参加,只要学生感兴趣,都可以无条件的参加培训。首先做好普及,然后选拔优秀,并且要平等对待每一个学生。不能单纯以获奖为目的,只顾几个优秀的学生,使大部分同学对此项活动失去信心。
3.运用恰当的培训方法
参加信息学奥林匹克竞赛需要学习程序设计语言、数据结构、算法及组合数学等知识,这些知识都是本科生或研究生的课程。如果按照我们上大学时的方法给中学生培训,必定会使学生感觉学习乏味并难度太大。因此,在给中学生培训时,应采取适合中学生的方法。
3.1 激发学生学习兴趣。
兴趣是最好的老师,在培训中可以以某个有趣味性的实例为先导,进而提出问题,引导学生思考,通过学和做去完成任务。恰当的教学任务不仅可以提高学生解决问题的兴趣与欲望,同时还可以培养学生独立思考问题的能力和创新能力,增强学生解决问题的能力。
实例的选取要注意两个方面:(1)趣味性;(2) 要贴近实际生活让学生觉得学而有用。以此激发学生的创作兴趣和学习热情。
在设计实例时要以兴趣为主线,以实用为载体,以针对性为度,以培养学生能力、发展学生个性为目的。 比如在讲解程序设计语言中循环的嵌套时,可以用百钱买百鸡实例。
3.2 使用多种学习方法。
清华大学吴文虎教授曾指出,“现在计算机的知识更新很快,新的操作方法、新的技术层出不穷,要了解和掌握,靠教师教根本教不过来。”因此,我们搞培训只能把基础知识与方法教给学生,教师起指导与点拨作用之后就靠学生通过自学、上网学习交流、讨论等多种渠道与方法进行学习。
比如因特网,现在网上关于信息学奥林匹克竞赛的学习资料非常多,并且有论坛等进行交流的平台,有很多金牌选手也参与进来,可以给学习者一个相互交流学习的机会。
4.培养学生良好的学习习惯
很多专家指出,提高学生编程的正确率必须要培养学生有一个良好的编程习惯。包括:
4.1 规范地书写程序。我们书写程序时要使用缩进格式,不同层次的语句向后缩进若干格,这样可以保证程序尽量少出语法错误。另外,命名变量名时应尽量有一定意义,增加程序的可读性,调试程序时也方便。但是不要把变量名起得太长,这样会影响编程速度,可以使用一些简短的汉语拼音或英文缩写,只要自己好记就可以了。
4.2 要使用自顶向下分析结构化编程。尽量不使用转向语句,并且将一些独立的功能例如输入、输出功能模块化,这样在调试的时候可以逐模块地检查排错,将一个大规模问题分解成几个小规模问题。但是也不能盲目地将程序分割成太多模块。模块化的依据主要在于程序的内在逻辑。
4.3 正确理解、使用全局变量。信息学奥林匹克竞赛中的程序规模一般比较小,全局变量的使用会很频繁,有时全局变量可以简化编程复杂度,但是全局变量的使用不当也会产生错误,特别是在过程或函数中改变全局变量的值可能会影响整个程序的结果。教学中一定要让学生清楚全局变量和局部变量的区别,全局变量在过程或函数中被修改时对程序的影响,养成学生正确使用全局变量的习惯。
5.掌握测试程序的方法
养成良好的习惯能避免编程中的很多错误,但是这还不足以能保证竞赛中编写的程序能通过所有的测试数据,这是因为竞赛评测时给的标准测试数据都是相当苛刻的,如果程序提交前没有经过充分的测试,很有可能不能通过标准测试数据。学生在参加竞赛时经常会遇到这样的情况:竞赛完了以后感觉非常好,觉得题目不难,而且几道题自己都做完了,都通过了样例数据,但是等成绩出来以后却和期望中的相差甚远。使用标准测试数据测试自己的程序后才发现,不是某些特殊情况没有考虑到,就是犯了小错误,例如变量误用,或者数组声明地太小。很多学生不止一次犯过类似这样的错误,常常因为这样的错误而懊悔不已,原本应该能够拿到的分数却没有拿到。大多数人把这种错误归咎于粗心,其实出现错误是很正常的,无论多么擅长编程的人都不可能完全避免出错。
在竞赛中我们编写完一个题目后自己应该设计多组测试数据来测试自己的程序,从而找到程序中隐藏的错误。题目给的样例数据都非常简单,不能只用它来测试程序。我们需要设计出精巧的测试数据,使用的数量既不多,不浪费竞赛中宝贵的时间,又能够找出程序中隐含的错误。这就需要选手了解测试的方法,如我们竞赛使用的黑盒测试,为了保证程序的正确性还可以结合使用白盒测试法,尽量在最短的时间内找到程序中的错误。
通过几年的努力,我校在信息学奥林匹克竞赛活动中取得了一些成绩,实践证明我们研究的策略是有效的。今后我们还将一如既往地开展信息学奥林匹克竞赛的培训,使更多的学生能通过这一活动,得到提升,得到发展。