从ACM/ICPC探索提升大学生程序设计能力的方法

时间:2022-03-20 10:06:07 公文范文 浏览次数:

摘要 ACM/ICPC是世界各国大学生最具影响力的国际计算机类的赛事,是广大爱好计算机编程的大学生展示才华的舞台,是各个大学计算机教育成果的直接体现。本文提出在指导学生参加ACM/ICPC的日常的教学过程和集训过程中积累的一些提升大学生程序设计能力的教学经验和方法,和同行们探讨。

关键词 ACM/ ICPC;程序设计;课程设置;实战集训

中图分类号TP39文献标识码A文章编号 1674-6708(2010)26-0228-02

1 ACM/ICPC介绍

ACM/ICPC (ACM International Collegiate Programming Contest,国际大学生程序设计竞赛)是由国际计算机界历史悠久、颇具权威性的组织ACM(Association for Computing Machinery,国际计算机协会)主办的。是世界上公认的规模最大、水平最高的国际大学生程序设计竞赛。其目的旨在使大学生运用计算机来充分展示自己分析问题和解决问题的能力。竞赛从1970年至今已举办了34届,受到国际各知名大学的普遍重视,并受到全世界各著名计算机公司的高度关注。ACM/ICPC已成为世界各国大学生最具影响力的国际计算机类的赛事,是广大爱好计算机编程的大学生展示才华的舞台,是各个大学计算机教育成果的直接体现。该项竞赛分为区域预赛和国际决赛两个阶段进行,各预赛区第一名自动获得参加世界决赛的资格,世界决赛安排在每年的3月~4月举行,而区域预赛安排在上一年的9月~12月在各大洲举行。

竞赛中每队3人仅拥有一台计算机,要求选手在全封闭的环境内(可以携带包括词典在内的任何纸质的资料,但不得有电子资料)连续五个小时进行解答,而且对程序的时间复杂度和空间复杂度有一定的要求。竞赛用英文命题,题目数量在6~10题之间,试题没有规定范围,涉及知识面非常广。这就要求参赛学生不仅具有扎实的程序设计能力、良好的数学功底和数学建模能力,还要有较强的团队协作能力和压力下程序设计能力。

可以说,ACM/ICPC是参赛选手展示计算机才华的广阔舞台,是世界各国大学生计算机教育成果的直接体现,是信息企业和世界顶级计算机人才对话的绝佳机会。因此,我国高校普遍注意到ACM/ICPC的影响力,并作为培养大学生程序设计能力的方向。

2 课程群建设

ACM/ICPC的题目涉及计算机在各种应用领域中提炼出来的一些理论和方法问题,需要参赛选手具备高级语言程序设计、数据结构、离散数学、图论、组合数学、人工智能、计算几何和算法设计与分析等方面的基础知识,还要有扎实的编程解题功夫,特别是要有将实际问题抽象为数学模型的能力,这就需要高校计算机专业在培养大学生程序设计能力上要循序渐进、由浅入深合理建设程序设计相关课程群。

首先是数学基础课的建设,除了开设在一二年级开设高等数学、线性代数、概率论和离散数学等基础课程外、还逐步开设了图论、组合数学和人工智能等选修课。

其次是程序设计课的建设,在大学一年级第一学期开设了基础程序课,在大学一年级第二学期进一步开设了程序设计实践和课程设计。同时,在对学生的考试形式也进行了改革,采用答辩和现场调试的方法考试,大大提高学生的动手能力。在大学二年级第一学期开设数据结构的基础上,开设了算法设计与分析限选课,主要将一些基本的算法,如递归算法、分治算法、动态规划、贪心算法等,课程形式以经典题目实战训练为主。

最后,我们还相继开设了数学建模和程序设计方法等选修课程,以提高学生对具体问题的数学建模能力和利用计算机解题的能力。

本课程群的设立由浅入深,相互补充,使广大同学的程序设计能力得到了较大的提高,同时也为参加ACM/ICPC打下了较为扎实的基础。

3 实战集训

ACM/ ICPC不仅需要参赛选手有扎实的功底,而且选手有敢于拼搏和团队合作的精神,这就需要对参加ACM/ ICPC的学生进行专门的训练。

我们在实战集训分两部分进行,分为暑假集训和学期内的开放实验集训。集训队员是面向全校招收,特别强调参加过NOI的同学积极参加,同时注意数学、物理等专业学生的加入。通过作ICPC 专题报告、相关教师课堂宣传等形式,让同学们相互告知,选拔采用校赛形式,除了考察学生的基本编程能力外,还对同学的团队协作和沟通交流能力进行考察。

暑假集训往往采用以教师授课和课堂讨论为主,按竞赛试题分类讲解,使同学们在集训期间全面掌握竞赛试题所涉及的知识点,并且引导学生课下深入探讨。

学期内的开放实验往往放到周末进行,每月进行一次月赛,开放实验完全按照竞赛的形式采用3人一组,每组一台电脑,以训练学生们的协作能力。

为了使同学课后有沟通的平台,我们在校园局域网上搭建了实战平台,除了放置各种竞赛试题、竞赛信息外,还可以离线布置作业,设置论坛等。我们还经常组织集训队员以沙龙的形式进行讨论,涉及知识体系、难点解析、解题技巧等多方面;在实战训练中,要充分发挥老队员的作用,形成了老队员帮助新队员的传统。

4 结论

ACM/ICPC的区域预赛是规模很大、范围很广的赛事,但历届河南省各高校却极少组队参加。为了提升和检验河南省计算机教育水平,河南省计算机学会从2008年开始组织河南省第一届ACM国际大学生程序设计竞赛,在河南省积极推广开展ACM国际大学生程序设计竞赛,为广大的爱好计算机编程的大学生提供展示才华的舞台,为河南省各高校组队参加ACM/ICPC的区域预赛的提供实战的场地,并以此为契机推动河南省计算机教育水平的提高。

迄今为止,河南工业大学连续参加了三届竞赛,成绩逐年提升。本文将在指导学生集训的过程中和日常的教学过程中积累的一些提升大学生程序设计能力的教学经验和方法一一列举,和大家探讨。

参考文献

[1]徐本柱,王浩,胡学钢.ACM/ICPC的教学与实践[J],2008,22(3):133-137.

[2]http://acm.zju.edu.cn.

[3]吴文虎.ACM国际大学生程序设计竞赛试题与解析(一)[M].北京:清华大学出版社,1998.

推荐访问:程序设计 探索 提升 能力 大学生