高职学生参与ACM程序设计竞赛的特点和培训

【摘 要】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++、Ja以及其它允许的语言,编写的程序由在线系统进行自动评判.

由浙江省大学生科技竞赛委员会主办、浙江大学承办的浙江省大学生程序设计竞赛也称为ACM/ICPC浙江省赛,是ACM/ICPC在亚洲组织的省赛、国赛的一部分,从2004年开始至2013年已连续举办了十届比赛.浙江省本、专科高校都积极组织队伍参加比赛,如今已经基本稳定在本科队伍200个左右、专科队伍100个左右的参赛规模.

所有参赛队伍同台竞技,成绩有统一的排名,但本、专科院校的参赛学生在知识水平和竞赛准备上有较大的差距,所以本、专科队伍会分别评比奖项,各设一个特等奖以及一定比例的金、银、铜奖.

三、往年几届浙江省大学生程序设计竞赛的数据分析

由于浙江省赛在赛后不提供比赛时的数据,所以选择省赛竞赛平台(acm.zju.edu.)的校外同步竞赛(非参赛的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.比赛期间的选题策略

根据排名规则,参赛队在解题时需要考虑一个选题的策略,不然,即使有相同的解题数量,也可能排名时偏弱于其他参赛队. (3)没有系统的数学、算法上的知识积累

从实际的训练表现来看,高职生的思维能力也并不一定差,但竞赛中若有数学类的题目则需要特定的数学知识、若有算法类的题目则需要用到特定的算法,这些特定的知识不是靠灵活的思维就能解决,而是需要专门花精力去学习才能掌握,如果没有这个知识背景,那么就会无从下手.

(4)积极性高、但训练时间短

部分本科生在高中阶段就因为参加信息技术大赛而进行过系统的培训,在大学期间又会有较多志同道合的来源于不同专业的理工科同学进行交流,在知识积累和ACM的训练上有较多的时间,并且他们的理解力也快很多.

而高职生在入学之前,即使有编程的基础,基本没有ACM程序设计以及相关知识的系统性积累,只能入校后进行练习,他们的积极性是很高的,但也没有时间也没有环境进行系统性的算法学习,只能在普通的算法以及考验思维的题目上可以加强训练.

五、组织高职生进行ACM程序设计竞赛培训

1.早宣传、早鼓励、早训练

正因为训练时间短,所以必须入校不久就加强ACM程序设计竞赛的宣传,介绍往年的获奖情况、比赛的特点,同时宣传学校对竞赛的支持政策,加强新老学生的交流,鼓励学生早投入到对ACM的认识中,使得有基础的学生能督促自己尽早训练.

总之,目的是激发学生参与ACM程序设计的积极性,尽早开始进行基础性题目的训练,特别是在同期加强英语阅读的能力.

2.集中培训,突破难点

如果能让学生自发的早训练,那么在赛前的两、三个月,就可以进行集中的提高的培训,专门安排一个机房,通过对历届赛题特别是适合于高职生难度的那些题目的分类分析,并选取其它同等难度的各类题目进行培训和训练.

应该在这段培训期间尽快的选定组队的队员,并按照团队进行有有一定难度的团队解题训练,使团队内成员对各自的分工和合作有较好的磨合.

同学也反映,平时在练习中相互的交流总是比较简单的、随意的,没有压力感,而这种在机房的集中训练,能使得大家更齐心协力的专注于题目,感受到在有限的时间内能否完成解题的压力.

3.正式竞赛期间的注意事项

(1)选题策略

因为本科院校的参赛队伍在英语阅读以及其他发面的优势,能够在比赛期间较快的完成部分简单题目,他们的选题策略也是尽量选取从易到难的题目,也许少数几个队伍有偶然性,但较多队伍解题情况就能反映出题目难度来.

而高职院校的参赛队,由于英语阅读的薄弱,使得一下子在最简单的题目上就会落后于本科队,这样,当我们需要选取下一个难度的题目时,完全可以在竞赛页面查询即时的统计数据,判断可以做的题目.


依据判断的待解题目难度,专科队应该选择1、2题作为主攻的方向.

(2)团队分工协调

本科院校的比较优秀的参赛队伍,组成的3个成员往往是分方向负责不同类型的题目,这是因为ACM题目的题型复杂,涉及的算法多,一个人无法覆盖到方方面面,在比赛时3个队员可以各自独立的准备一道题目.

但是,对于高职院校的参赛队伍,由于没有足够时间进行系统的算法学习,同时又有英语、数学等知识上的欠缺,使得他们队员之间没有太多可区分的题型方向,而且最终即使优秀的高职队伍基本解题量也在5题左右,所以3个队员各自独立的解答一道题目,会很快存在困难.

在判断出题目难易程度之后,更需要参赛队克服困难,协调解题的策略,发挥团队的思维,透彻的理解题目,共同的来完成一道题目的解答,尽量少出现做了一半做不下去了,换个题目尝试的行为.

六、结语

组成高职学生参加ACM程序设计竞赛,能够为学校为专业获得荣誉,同时,参赛同学也在程序设计能力、团队协作能力、甚至阅读能力上得到提高.获得的良好成绩也激励着参赛的和未参赛的同学对程序设计的热爱,提高了软件技术专业学生学习程序设计的积极性.

类似论文

ACM程序设计比赛网站小试牛刀

摘 要:国际大学生程序设计大赛是由美国计算机协会主办的,一项旨在展示大学生创新能力,团队精神和在压力下编写程序、分析和解。
更新日期:2024-7-14 浏览量:93887 点赞量:20760

非计算机专业学生如何学好程序设计

摘 要针对非计算机专业的学生对程序设计这门课程学习比较吃力的问题,进行分析和研究 首先阐述学习程序设计课程的重要性。
更新日期:2024-12-20 浏览量:157190 点赞量:33944

高职《C语言程序设计》教学的

摘 要:高职学生由于基础知识相对薄弱,学习新知识的能力较弱,计算机程序设计所用的各种语言对高职学生来说基本是陌生&。
更新日期:2024-1-28 浏览量:21751 点赞量:6085