论文部分内容阅读
【摘 要】ACM程序设计竞赛旨在展示大学生创新能力、团队精神和在压力下编写程序分析问题、解决问题的能力。本文以往年几届浙江省大学生程序设计竞赛的数据分析了高职生参与ACM程序设计竞赛的特点,并探索组织高职生进行ACM程序设计竞赛培训的方法,也为拓展软件技术专业学生素质提供新的途径。
【关键词】ACM;大学生程序设计竞赛;高职;培训
一、前言
高等学校是知识创新的基地、人才培养的摇篮,高职院校承担着培养高端技能型专门人才的重任,高职学生必须在实践技能上有非常突出的能力。
高职软件技术专业在对学生的技能型专门人才方面的培养,就需要加强实践教学的比例,提高学生的实际编程能力和动手能力。
软件技术专业学生参加各类大学生程序设计竞赛是提高编程能力的重要手段,特别是ACM程序设计竞赛在国内外都有非常大的影响力,国内的各类本、专科院校都积极组织学生参与,成为最为重要的程序设计竞赛。
二、ACM国际大学生程序设计竞赛和浙江省大学生程序设计竞赛介绍
ACM国际大学生程序设计竞赛(ACM Inter-
national Collegiate Programming Contest,简称ACM/ICPC)是由美国计算机协会(Association of Computing Machinery,简称ACM)主办的,世界上公认的规模最大、水平最高的国际大学生程序设计竞赛,竞赛旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题的能力。
ACM程序設计竞赛以团队的形式代表学校参赛,每队至多三名本校学生组成,比赛期间,每队只使用1台电脑在4-5个小时内编写程序解决10个左右的试题,试题描述全部为英文,程序设计语言可选用C、C++、Java以及其它允许的语言,编写的程序由在线系统进行自动评判。
由浙江省大学生科技竞赛委员会主办、浙江大学承办的浙江省大学生程序设计竞赛也称为ACM/ICPC浙江省赛,是ACM/ICPC在亚洲组织的省赛、国赛的一部分,从2004年开始至2013年已连续举办了十届比赛。浙江省本、专科高校都积极组织队伍参加比赛,如今已经基本稳定在本科队伍200个左右、专科队伍100个左右的参赛规模。
所有参赛队伍同台竞技,成绩有统一的排名,但本、专科院校的参赛学生在知识水平和竞赛准备上有较大的差距,所以本、专科队伍会分别评比奖项,各设一个特等奖以及一定比例的金、银、铜奖。
三、往年几届浙江省大学生程序设计竞赛的数据分析
由于浙江省赛在赛后不提供比赛时的数据,所以选择省赛竞赛平台(acm.zju.edu.cn)的校外同步竞赛(非参赛的ACM爱好者在竞赛时间段内进行的解题)产生的数据作为部分分析的依据。
1.每题成功解题人数的统计数据
如图1、图2所示,以2012年和2013年的成功解题数据分析,因为题目难度随机分布在题目序号中,所以不按照题目顺序、而是每题成功解题人数从大到小构造柱状图。
图1 2012年浙江省大学生程序设计竞赛成功解题情况图
图2 2013年浙江省大学生程序设计竞赛成功解题情况图
从图中可以看出一些特性:
(1)题目难度控制较好,区分度清晰
一个题目成功解题的人数越多,说明这个题目的难度较低,反之,解题人数越少,题目难度越大。
图1中,前6个题目成功解题人数几乎成线性的递减,很好的控制了竞赛的节奏,易于区分出参赛队伍的水平,后5个题目I、E、G、B、C难度极大,是强队真正竞争的地方。同理,在图2中,前7个题目成功解题的人数也是几乎成线性的递减,后4个题目E、G、C、K显然也是难度极大。
(2)年度间的题目难度比较
从图1、图2及数据体现看,2012年的竞赛难度比2013年大。这两年的题目数量相等,当从难度极大的题目数量看2012年偏多,同时,前几题的的线性递减的倾斜度显然是2012年的大,说明2012年的题目难度递增趋势快。
对于普通参赛队伍来说,前几题是可以奋斗的题目,而同一年这些题目间解题成功人数递减的数据比较:
2012年前6题的平均递减人数是:
2013年前7题的平均递减人数是:
从以上运算数据中看出2012年递减较快,反映了2012年的题目难度增长趋势比2013年大。
2.每个参赛队成功解题的数量分布
从另一个角度考虑,在比赛期间,每个参赛队能够成功解答的题目数量分布情况如图3、图4所示。
从这两个图中的差异,再参考对图1、图2的分析,可以看到2012年由于题目难度偏大,每个参赛队的解题数量偏低,近一半集中在2题以下,而2013年解题有比较好的分布,容易使普通参赛队有发挥的机会。
图3 2012年每个参赛队解题数量的分布比例图
图4 2013年每个参赛队解题数量的分布比例图
3.竞赛题目特点
从图1、图2的分析可以看到,题目是一个由易到难的过程,具体到每一个题目的题型时,有一半多一些偏易的题目主要考核的是参赛队使用特定的编程语言编写代码的熟练度、基本数据结构的算法和侧重于考验思维能力的题目,而较难的那部分题目,往往有高级的数据结构或者有特定的算法支持,需要复杂的思维处理能力。
再从图3、图4中可以看到,绝大部分参赛队伍也只能完成较易的那部分题目、只有少数队伍有过特定知识的准备,并经过一定的训练,才能够在比赛期间冲击并完成更难的题目。
4.比赛期间的选题策略
根据排名规则,参赛队在解题时需要考虑一个选题的策略,不然,即使有相同的解题数量,也可能排名时偏弱于其他参赛队。 假设一个题目的解题时间是固定的、且不产生罚时,并假设题目X的解题时间是s分钟,题目Y的解题时间是t分钟,且s (1)当题目X、Y在相邻的时间段内解答完成
同时假设在X、Y之前解答的题目已经耗费的时间是m,那么当X在Y之前完成解答,X和Y的总计时是:
T1=(m+s)+(m+s+t)=2m+2s+t
如图5所示:
m分钟 X(s分钟) Y(t分钟)
图5 相邻时先完成题目X后完成题目Y
当X在Y之后完成解答,X和Y的总计时是:
T2=(m+t)+(m+t+s)=2m+2t+s
如图6所示:
m分钟 Y(t分钟) X(s分钟)
图6 相邻时先完成题目Y后完成题目X
因为假定s 总的竞赛耗费时间在其它都不变的情况下,差距的时间是:T2-T1=t-s。
(2)当题目X、Y不在相邻的时间段内解答完成
若在X和Y之间相隔了k个有序的题目,它们的总耗时为n分钟,那么当X在Y之前完成解答,X和Y的总计时是:
T3=(m+s)+(m+s+n+t)=2m+2s+t+n
如图7所示:
m分钟 X(s分钟) n分钟 Y(t分钟)
图7 间隔k个有序题目时先完成题目X后完成题目Y
当X在Y之后完成解答,X和Y的总计时是:
T4=(m+t)+(m+t+n+s)=2m+2t+s+n
如图8所示:
m分钟 Y(t分钟) n分钟 X(s分钟)
图8 间隔k个有序题目时先完成题目Y后完成题目X
在s 但同时注意,夹在中间耗时n分钟的k道题目,在图7到图8的解题方案转变时,每个题目都往后移动了,所以总的竞赛耗费时间在其它都不变的情况下,差距的时间是:T4-T3+k(t-s)=(k+1)(t-s)。
综合上述的分析,选题策略应该按照每个题目解题时耗费时间的长短从小到大排序,并按这个顺序依次解题。而解题耗费时间的长短,可以假定为题目的难易程度。从结果看,也就是如图1、图2所示柱状图从左到右依次选题是一个比较优化的选题策略。
四、高职生参与ACM程序设计竞赛的特点
1.高职生相比于本科生差距巨大
浙江省大学生程序设计竞赛的参赛队伍是本科组约200个、专科组约100个,共同构成统计数据。在第二部分对竞赛数据的分析中,显然本科组的优势参赛队有机会向完成8、9、10题甚至是11题进行冲击。
那么,专科组的解题情况又是如何呢?我们从最近4届专科组获得特点奖、一等奖的解题数据进行比较。如表1所示:
表1 近4届浙江省大学生程序设计竞赛专科组解题情况
年份 特等奖 一等奖(金奖)
2013年 完成7题 1个参赛队完成6题、6个参赛队完成5题
2012年 完成5题 8个参赛队完成3题
2011年 完成5题 6个参赛队完成5题
2010年 完成6题 5个参赛队完成5题
参考图3、图4,可以注意到,专科组的一等奖的解题数量处于所有参赛队的中等位置,也可以认为是在150名左右,这样的成绩很难进入到本科组的三等奖,只有偶尔1、2个专科组的参赛队解题突出一些,会进入到排名100以内。
2.高职院校间差距小竞争激烈
从表1的分析看,绝大部分的高职院校的参赛队只能压缩在5题左右的可解题目,而且这还是表现优秀的队伍,这使得相互之间多解出一题的排名差距更加大,竞争激烈。
那么,各高职院校间的竞赛水平是否差距巨大呢?考虑到特等奖有一定的特殊性,可能是个别参赛队员本身实力突出所带来的表现,通过分析特定奖和一等奖在各院校的分布,以近四届的数据为例,如图9所示:
图5 高职院校近四届浙江省赛获一等奖及以上参赛队个数
从图5中可以看到,共有16所高职院校在近四届中至少获得过一次一等奖。
考虑到解题数量有限,其实专科组获得二等奖的参赛队也其实有机会获得一等奖,只是他们在冲击下一题的解题中未能成功而已。所以图10统计了近4届获得二等奖及以上的参赛队数量分布情况(共计26所高职院校进入统计,图6中部分省略):
图6 高职院校近四届浙江省赛获二等奖及以上参赛队个数
3.高职生的特点
高职生和本科生之间的差距巨大最根本的原因在于生源造成的知识能力的巨大差异。本科院校特别是重点本科院校能够优先获得优秀的学生,也获得优秀学生的青睐。高职生的来源有两块,一部分来源于普通高考的录取,是那些无法进入本科院校学习而只能选取高职院校就读,另一部分来源于中职院校,他们只能被录取到高职院校。
(1)竞赛的主力是中职录取的学生
由于普通高考上来的学生在高中阶段几乎没有接触过程序设计,进入高校学习后他们有一个逐步编程语言的过程,也就是没法快速的进入到竞赛培训的角色,而中职学生必须是相关专业才能錄取到高职的计算机类专业就读,它们已经学过较多的编程,甚至有部分同学在中职阶段就对程序设计有非常高的兴趣,有非常良好的基础,有非常强的动手能力。
(2)高职生的英语薄弱
我们能够找到非常优秀的学生,他们在实际编写代码的能力突出,但是一个普遍的问题是在英语上都欠缺,一个对本科生来说没有阅读困难的题目,到了他们眼里就非常困难,甚至为此耗费大量的时间,一个即使简单的题目,由于没有读懂题目或者偏离题目含义也是很正常的事情。 (3)没有系统的数学、算法上的知识积累
从实际的训练表现来看,高职生的思维能力也并不一定差,但竞赛中若有数学类的题目则需要特定的数学知识、若有算法类的题目则需要用到特定的算法,这些特定的知识不是靠灵活的思维就能解决,而是需要专门花精力去学习才能掌握,如果没有这个知识背景,那么就会无从下手。
(4)积极性高、但训练时间短
部分本科生在高中阶段就因为参加信息技术大赛而进行过系统的培训,在大学期间又会有较多志同道合的来源于不同专业的理工科同学进行交流,在知识积累和ACM的训练上有较多的时间,并且他们的理解力也快很多。
而高职生在入学之前,即使有编程的基础,基本没有ACM程序设计以及相关知识的系统性积累,只能入校后进行练习,他们的积极性是很高的,但也没有时间也没有环境进行系统性的算法学习,只能在普通的算法以及考验思维的题目上可以加强训练。
五、组织高职生进行ACM程序设计竞赛培训
1.早宣传、早鼓励、早训练
正因为训练时间短,所以必须入校不久就加强ACM程序设计竞赛的宣传,介绍往年的获奖情况、比赛的特点,同时宣传学校对竞赛的支持政策,加强新老学生的交流,鼓励学生早投入到对ACM的认识中,使得有基础的学生能督促自己尽早训练。
总之,目的是激发学生参与ACM程序设计的积极性,尽早开始进行基础性题目的训练,特别是在同期加强英语阅读的能力。
2.集中培训,突破难点
如果能让学生自发的早训练,那么在赛前的两、三个月,就可以进行集中的提高的培训,专门安排一个机房,通过对历届赛题特别是适合于高职生难度的那些题目的分类分析,并选取其它同等难度的各类题目进行培训和训练。
应该在这段培训期间尽快的选定组队的队员,并按照团队进行有有一定难度的团队解题训练,使团队内成员对各自的分工和合作有较好的磨合。
同学也反映,平时在练习中相互的交流总是比较简单的、随意的,没有压力感,而这种在机房的集中训练,能使得大家更齐心协力的专注于题目,感受到在有限的时间内能否完成解题的压力。
3.正式竞赛期间的注意事项
(1)选题策略
因为本科院校的参赛队伍在英语阅读以及其他发面的优势,能够在比赛期间较快的完成部分简单题目,他们的选题策略也是尽量选取从易到难的题目,也许少数几个队伍有偶然性,但较多队伍解题情况就能反映出题目难度来。
而高职院校的参赛队,由于英語阅读的薄弱,使得一下子在最简单的题目上就会落后于本科队,这样,当我们需要选取下一个难度的题目时,完全可以在竞赛页面查询即时的统计数据,判断可以做的题目。
依据判断的待解题目难度,专科队应该选择1、2题作为主攻的方向。
(2)团队分工协调
本科院校的比较优秀的参赛队伍,组成的3个成员往往是分方向负责不同类型的题目,这是因为ACM题目的题型复杂,涉及的算法多,一个人无法覆盖到方方面面,在比赛时3个队员可以各自独立的准备一道题目。
但是,对于高职院校的参赛队伍,由于没有足够时间进行系统的算法学习,同时又有英语、数学等知识上的欠缺,使得他们队员之间没有太多可区分的题型方向,而且最终即使优秀的高职队伍基本解题量也在5题左右,所以3个队员各自独立的解答一道题目,会很快存在困难。
在判断出题目难易程度之后,更需要参赛队克服困难,协调解题的策略,发挥团队的思维,透彻的理解题目,共同的来完成一道题目的解答,尽量少出现做了一半做不下去了,换个题目尝试的行为。
六、结语
组成高职学生参加ACM程序设计竞赛,能够为学校为专业获得荣誉,同时,参赛同学也在程序设计能力、团队协作能力、甚至阅读能力上得到提高。获得的良好成绩也激励着参赛的和未参赛的同学对程序设计的热爱,提高了软件技术专业学生学习程序设计的积极性。
参考文献:
[1]何莉辉,梁沧.基于ACM国际大学生程序设计竞赛的学习模式[J].边疆经济与文化,2008(06).
[2]李玲芝,徐俊,易险峰.依托大学生计算机程序设计竞赛,探索信息学科创新型人才培养新模式[J].实践教学改革与创新,2009(12).
[3]石晶瑜,白喜文,包常喜.ACM ICPC竞赛中团队精神的培养[J].内蒙古师范大学学报(教育科学版),2011(3).
作者简介:林新辉(1979—),硕士研究生,讲师,主要研究方向:计算机辅助几何设计。
【关键词】ACM;大学生程序设计竞赛;高职;培训
一、前言
高等学校是知识创新的基地、人才培养的摇篮,高职院校承担着培养高端技能型专门人才的重任,高职学生必须在实践技能上有非常突出的能力。
高职软件技术专业在对学生的技能型专门人才方面的培养,就需要加强实践教学的比例,提高学生的实际编程能力和动手能力。
软件技术专业学生参加各类大学生程序设计竞赛是提高编程能力的重要手段,特别是ACM程序设计竞赛在国内外都有非常大的影响力,国内的各类本、专科院校都积极组织学生参与,成为最为重要的程序设计竞赛。
二、ACM国际大学生程序设计竞赛和浙江省大学生程序设计竞赛介绍
ACM国际大学生程序设计竞赛(ACM Inter-
national Collegiate Programming Contest,简称ACM/ICPC)是由美国计算机协会(Association of Computing Machinery,简称ACM)主办的,世界上公认的规模最大、水平最高的国际大学生程序设计竞赛,竞赛旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题的能力。
ACM程序設计竞赛以团队的形式代表学校参赛,每队至多三名本校学生组成,比赛期间,每队只使用1台电脑在4-5个小时内编写程序解决10个左右的试题,试题描述全部为英文,程序设计语言可选用C、C++、Java以及其它允许的语言,编写的程序由在线系统进行自动评判。
由浙江省大学生科技竞赛委员会主办、浙江大学承办的浙江省大学生程序设计竞赛也称为ACM/ICPC浙江省赛,是ACM/ICPC在亚洲组织的省赛、国赛的一部分,从2004年开始至2013年已连续举办了十届比赛。浙江省本、专科高校都积极组织队伍参加比赛,如今已经基本稳定在本科队伍200个左右、专科队伍100个左右的参赛规模。
所有参赛队伍同台竞技,成绩有统一的排名,但本、专科院校的参赛学生在知识水平和竞赛准备上有较大的差距,所以本、专科队伍会分别评比奖项,各设一个特等奖以及一定比例的金、银、铜奖。
三、往年几届浙江省大学生程序设计竞赛的数据分析
由于浙江省赛在赛后不提供比赛时的数据,所以选择省赛竞赛平台(acm.zju.edu.cn)的校外同步竞赛(非参赛的ACM爱好者在竞赛时间段内进行的解题)产生的数据作为部分分析的依据。
1.每题成功解题人数的统计数据
如图1、图2所示,以2012年和2013年的成功解题数据分析,因为题目难度随机分布在题目序号中,所以不按照题目顺序、而是每题成功解题人数从大到小构造柱状图。
图1 2012年浙江省大学生程序设计竞赛成功解题情况图
图2 2013年浙江省大学生程序设计竞赛成功解题情况图
从图中可以看出一些特性:
(1)题目难度控制较好,区分度清晰
一个题目成功解题的人数越多,说明这个题目的难度较低,反之,解题人数越少,题目难度越大。
图1中,前6个题目成功解题人数几乎成线性的递减,很好的控制了竞赛的节奏,易于区分出参赛队伍的水平,后5个题目I、E、G、B、C难度极大,是强队真正竞争的地方。同理,在图2中,前7个题目成功解题的人数也是几乎成线性的递减,后4个题目E、G、C、K显然也是难度极大。
(2)年度间的题目难度比较
从图1、图2及数据体现看,2012年的竞赛难度比2013年大。这两年的题目数量相等,当从难度极大的题目数量看2012年偏多,同时,前几题的的线性递减的倾斜度显然是2012年的大,说明2012年的题目难度递增趋势快。
对于普通参赛队伍来说,前几题是可以奋斗的题目,而同一年这些题目间解题成功人数递减的数据比较:
2012年前6题的平均递减人数是:
2013年前7题的平均递减人数是:
从以上运算数据中看出2012年递减较快,反映了2012年的题目难度增长趋势比2013年大。
2.每个参赛队成功解题的数量分布
从另一个角度考虑,在比赛期间,每个参赛队能够成功解答的题目数量分布情况如图3、图4所示。
从这两个图中的差异,再参考对图1、图2的分析,可以看到2012年由于题目难度偏大,每个参赛队的解题数量偏低,近一半集中在2题以下,而2013年解题有比较好的分布,容易使普通参赛队有发挥的机会。
图3 2012年每个参赛队解题数量的分布比例图
图4 2013年每个参赛队解题数量的分布比例图
3.竞赛题目特点
从图1、图2的分析可以看到,题目是一个由易到难的过程,具体到每一个题目的题型时,有一半多一些偏易的题目主要考核的是参赛队使用特定的编程语言编写代码的熟练度、基本数据结构的算法和侧重于考验思维能力的题目,而较难的那部分题目,往往有高级的数据结构或者有特定的算法支持,需要复杂的思维处理能力。
再从图3、图4中可以看到,绝大部分参赛队伍也只能完成较易的那部分题目、只有少数队伍有过特定知识的准备,并经过一定的训练,才能够在比赛期间冲击并完成更难的题目。
4.比赛期间的选题策略
根据排名规则,参赛队在解题时需要考虑一个选题的策略,不然,即使有相同的解题数量,也可能排名时偏弱于其他参赛队。 假设一个题目的解题时间是固定的、且不产生罚时,并假设题目X的解题时间是s分钟,题目Y的解题时间是t分钟,且s
同时假设在X、Y之前解答的题目已经耗费的时间是m,那么当X在Y之前完成解答,X和Y的总计时是:
T1=(m+s)+(m+s+t)=2m+2s+t
如图5所示:
m分钟 X(s分钟) Y(t分钟)
图5 相邻时先完成题目X后完成题目Y
当X在Y之后完成解答,X和Y的总计时是:
T2=(m+t)+(m+t+s)=2m+2t+s
如图6所示:
m分钟 Y(t分钟) X(s分钟)
图6 相邻时先完成题目Y后完成题目X
因为假定s
(2)当题目X、Y不在相邻的时间段内解答完成
若在X和Y之间相隔了k个有序的题目,它们的总耗时为n分钟,那么当X在Y之前完成解答,X和Y的总计时是:
T3=(m+s)+(m+s+n+t)=2m+2s+t+n
如图7所示:
m分钟 X(s分钟) n分钟 Y(t分钟)
图7 间隔k个有序题目时先完成题目X后完成题目Y
当X在Y之后完成解答,X和Y的总计时是:
T4=(m+t)+(m+t+n+s)=2m+2t+s+n
如图8所示:
m分钟 Y(t分钟) n分钟 X(s分钟)
图8 间隔k个有序题目时先完成题目Y后完成题目X
在s
综合上述的分析,选题策略应该按照每个题目解题时耗费时间的长短从小到大排序,并按这个顺序依次解题。而解题耗费时间的长短,可以假定为题目的难易程度。从结果看,也就是如图1、图2所示柱状图从左到右依次选题是一个比较优化的选题策略。
四、高职生参与ACM程序设计竞赛的特点
1.高职生相比于本科生差距巨大
浙江省大学生程序设计竞赛的参赛队伍是本科组约200个、专科组约100个,共同构成统计数据。在第二部分对竞赛数据的分析中,显然本科组的优势参赛队有机会向完成8、9、10题甚至是11题进行冲击。
那么,专科组的解题情况又是如何呢?我们从最近4届专科组获得特点奖、一等奖的解题数据进行比较。如表1所示:
表1 近4届浙江省大学生程序设计竞赛专科组解题情况
年份 特等奖 一等奖(金奖)
2013年 完成7题 1个参赛队完成6题、6个参赛队完成5题
2012年 完成5题 8个参赛队完成3题
2011年 完成5题 6个参赛队完成5题
2010年 完成6题 5个参赛队完成5题
参考图3、图4,可以注意到,专科组的一等奖的解题数量处于所有参赛队的中等位置,也可以认为是在150名左右,这样的成绩很难进入到本科组的三等奖,只有偶尔1、2个专科组的参赛队解题突出一些,会进入到排名100以内。
2.高职院校间差距小竞争激烈
从表1的分析看,绝大部分的高职院校的参赛队只能压缩在5题左右的可解题目,而且这还是表现优秀的队伍,这使得相互之间多解出一题的排名差距更加大,竞争激烈。
那么,各高职院校间的竞赛水平是否差距巨大呢?考虑到特等奖有一定的特殊性,可能是个别参赛队员本身实力突出所带来的表现,通过分析特定奖和一等奖在各院校的分布,以近四届的数据为例,如图9所示:
图5 高职院校近四届浙江省赛获一等奖及以上参赛队个数
从图5中可以看到,共有16所高职院校在近四届中至少获得过一次一等奖。
考虑到解题数量有限,其实专科组获得二等奖的参赛队也其实有机会获得一等奖,只是他们在冲击下一题的解题中未能成功而已。所以图10统计了近4届获得二等奖及以上的参赛队数量分布情况(共计26所高职院校进入统计,图6中部分省略):
图6 高职院校近四届浙江省赛获二等奖及以上参赛队个数
3.高职生的特点
高职生和本科生之间的差距巨大最根本的原因在于生源造成的知识能力的巨大差异。本科院校特别是重点本科院校能够优先获得优秀的学生,也获得优秀学生的青睐。高职生的来源有两块,一部分来源于普通高考的录取,是那些无法进入本科院校学习而只能选取高职院校就读,另一部分来源于中职院校,他们只能被录取到高职院校。
(1)竞赛的主力是中职录取的学生
由于普通高考上来的学生在高中阶段几乎没有接触过程序设计,进入高校学习后他们有一个逐步编程语言的过程,也就是没法快速的进入到竞赛培训的角色,而中职学生必须是相关专业才能錄取到高职的计算机类专业就读,它们已经学过较多的编程,甚至有部分同学在中职阶段就对程序设计有非常高的兴趣,有非常良好的基础,有非常强的动手能力。
(2)高职生的英语薄弱
我们能够找到非常优秀的学生,他们在实际编写代码的能力突出,但是一个普遍的问题是在英语上都欠缺,一个对本科生来说没有阅读困难的题目,到了他们眼里就非常困难,甚至为此耗费大量的时间,一个即使简单的题目,由于没有读懂题目或者偏离题目含义也是很正常的事情。 (3)没有系统的数学、算法上的知识积累
从实际的训练表现来看,高职生的思维能力也并不一定差,但竞赛中若有数学类的题目则需要特定的数学知识、若有算法类的题目则需要用到特定的算法,这些特定的知识不是靠灵活的思维就能解决,而是需要专门花精力去学习才能掌握,如果没有这个知识背景,那么就会无从下手。
(4)积极性高、但训练时间短
部分本科生在高中阶段就因为参加信息技术大赛而进行过系统的培训,在大学期间又会有较多志同道合的来源于不同专业的理工科同学进行交流,在知识积累和ACM的训练上有较多的时间,并且他们的理解力也快很多。
而高职生在入学之前,即使有编程的基础,基本没有ACM程序设计以及相关知识的系统性积累,只能入校后进行练习,他们的积极性是很高的,但也没有时间也没有环境进行系统性的算法学习,只能在普通的算法以及考验思维的题目上可以加强训练。
五、组织高职生进行ACM程序设计竞赛培训
1.早宣传、早鼓励、早训练
正因为训练时间短,所以必须入校不久就加强ACM程序设计竞赛的宣传,介绍往年的获奖情况、比赛的特点,同时宣传学校对竞赛的支持政策,加强新老学生的交流,鼓励学生早投入到对ACM的认识中,使得有基础的学生能督促自己尽早训练。
总之,目的是激发学生参与ACM程序设计的积极性,尽早开始进行基础性题目的训练,特别是在同期加强英语阅读的能力。
2.集中培训,突破难点
如果能让学生自发的早训练,那么在赛前的两、三个月,就可以进行集中的提高的培训,专门安排一个机房,通过对历届赛题特别是适合于高职生难度的那些题目的分类分析,并选取其它同等难度的各类题目进行培训和训练。
应该在这段培训期间尽快的选定组队的队员,并按照团队进行有有一定难度的团队解题训练,使团队内成员对各自的分工和合作有较好的磨合。
同学也反映,平时在练习中相互的交流总是比较简单的、随意的,没有压力感,而这种在机房的集中训练,能使得大家更齐心协力的专注于题目,感受到在有限的时间内能否完成解题的压力。
3.正式竞赛期间的注意事项
(1)选题策略
因为本科院校的参赛队伍在英语阅读以及其他发面的优势,能够在比赛期间较快的完成部分简单题目,他们的选题策略也是尽量选取从易到难的题目,也许少数几个队伍有偶然性,但较多队伍解题情况就能反映出题目难度来。
而高职院校的参赛队,由于英語阅读的薄弱,使得一下子在最简单的题目上就会落后于本科队,这样,当我们需要选取下一个难度的题目时,完全可以在竞赛页面查询即时的统计数据,判断可以做的题目。
依据判断的待解题目难度,专科队应该选择1、2题作为主攻的方向。
(2)团队分工协调
本科院校的比较优秀的参赛队伍,组成的3个成员往往是分方向负责不同类型的题目,这是因为ACM题目的题型复杂,涉及的算法多,一个人无法覆盖到方方面面,在比赛时3个队员可以各自独立的准备一道题目。
但是,对于高职院校的参赛队伍,由于没有足够时间进行系统的算法学习,同时又有英语、数学等知识上的欠缺,使得他们队员之间没有太多可区分的题型方向,而且最终即使优秀的高职队伍基本解题量也在5题左右,所以3个队员各自独立的解答一道题目,会很快存在困难。
在判断出题目难易程度之后,更需要参赛队克服困难,协调解题的策略,发挥团队的思维,透彻的理解题目,共同的来完成一道题目的解答,尽量少出现做了一半做不下去了,换个题目尝试的行为。
六、结语
组成高职学生参加ACM程序设计竞赛,能够为学校为专业获得荣誉,同时,参赛同学也在程序设计能力、团队协作能力、甚至阅读能力上得到提高。获得的良好成绩也激励着参赛的和未参赛的同学对程序设计的热爱,提高了软件技术专业学生学习程序设计的积极性。
参考文献:
[1]何莉辉,梁沧.基于ACM国际大学生程序设计竞赛的学习模式[J].边疆经济与文化,2008(06).
[2]李玲芝,徐俊,易险峰.依托大学生计算机程序设计竞赛,探索信息学科创新型人才培养新模式[J].实践教学改革与创新,2009(12).
[3]石晶瑜,白喜文,包常喜.ACM ICPC竞赛中团队精神的培养[J].内蒙古师范大学学报(教育科学版),2011(3).
作者简介:林新辉(1979—),硕士研究生,讲师,主要研究方向:计算机辅助几何设计。