摘 要:ACM程序设计竞赛能提供给学生更多的实践机会,开拓学生的视野,增强学生所学知识的广度和深度,增强学生的团队协作意识,便于在学生中树立典型,起到示范作用,促进创新型人才的培养;更能激发学生学习程序设计类课程的兴趣,变被动地学为主动地学,充分带动学风,从而提高教学效果和人才培养质量;参赛获奖证书和参赛经历将成为将来学生就业的一个重要资本,成为了进入大企业、好企业的敲门砖,充分带动学生就业。
关键词:ACM程序设计竞赛 团队协作 教学效果
中图分类号:F241.4 文献标识码:A
文章编号:1004-4914(2013)03-132-02
为了拓展学生的知识面,践行黑龙江科技学院的“大德育、大工程、大实践”三大教育理念,提高学生的综合素质和实践能力,笔者积极开展素质教育活动,指导学生参加各类、各个级别的学科竞赛,并多次获奖,为学校争得了荣誉。素质教育活动的开展有利于课程建设和课程改革,更有利于学生的就业。教师通过指导学生参加各类竞赛活动,可以将竞赛中遇到的一些问题引入到课堂教学中,丰富教学内容,激发学生的学习兴趣;学生通过参加各类竞赛活动,能够增强自身的实践能力和自信心,开阔眼界。
笔者连续三年主持黑龙江科技学院的素质教育项目。2008年以来,积极组织学生参加“ACM国际大学生程序设计竞赛”累计获得一等奖1项,二等奖5项,三等奖18项。
一、算法与程序设计课的教学现状
在学校软件工程专业的人才培养方案中,设置了四门以C语言为主线的算法与程序设计类课程,分别是C程序设计、C++程序设计、数据结构和算法设计与分析。这四门课程具有较强的“先行-后续”性,课程内容也具有较强的衔接性,主要培养学生的算法与程序设计能力,进而提高学生用计算机来解决实际问题的能力,这四门课程对于能否培养出高素质、高水平的软件专业人才将起到决定性作用。但目前这四门课程存在一些共性问题,一是每门课程都有一定的实验学时,但数量较少,学生缺少实践的机会,导致学生的实践能力差;二是理论学时有限,虽然现有教学内容基本涵盖了学生要掌握的所有知识点,但教学内容缺乏广度和深度,学生学到的知识比较肤浅;三是教师的教学内容比较陈旧,更新速度较慢,不够新颖,缺乏吸引力,导致部分学生产生厌学心理;四是部分学生学习主动性差,处于一种“被学习”的状态,对程序设计有畏难心理,不会编程或者是只能编写出非常简单的程序。这些问题如果不加以解决将直接影响人才培养的质量,而组织学生参加一些专业相关的竞赛活动是解决这些问题的一种有效途径。近年来,许多高校都已经认识到了学科竞赛活动在教学改革实践中的重要性,越来越重视学科竞赛活动,鼓励学生积极参与各类重大赛事,例如参加“ACM程序设计竞赛”。
二、ACM程序设计竞赛简介
ACM程序设计竞赛是世界上公认的规模最大、水平最高的程序设计竞赛,是由美国计算机协会(ACM)组织的年度性竞赛,被誉为计算机科学界的奥林匹克竞赛。
竞赛的历史可以追溯到1970年,至今已有40多年的历史。1977年,首届ACM程序设计竞赛总决赛在ACM计算机科学会议期间举行,并于1989年将大赛总部设在了美国德克萨斯州的贝勒大学。1997年,IBM成为竞赛的赞助方,IBM的加盟使得参赛人数显著增加,自此之后,该竞赛逐渐发展成了一个全球性的赛事。
竞赛提倡创新和团队协作,鼓励学生在构建全新的软件程序时尽情发挥创意,帮助学生检验自己在强压力下的工作能力。竞赛采用组队参赛的形式,由三名队员组成一支队伍参赛,整个比赛时间为5个小时,比赛题目为6~10道不等,全英文。比赛时,每支队伍只使用一台电脑,参赛者争分夺秒,与其他参赛队伍比拼逻辑、策略和心理素质。竞赛中,高级语言程序设计、高等数学、数据结构、算法设计与分析、数学建模、离散数学等课程的知识都有所涉及,需要队员投入时间精力,进行相关的实践训练。
竞赛的评判过程十分严格,若每次提交的解决方案出现错误,就会受到加时惩罚。在最短的时间内,提交次数最少、解决问题最多的队伍就是最后的胜利者。
国内的许多著名大学,一直非常重视该项赛事的参与。上海交通大学曾两次夺得世界总决赛冠军,浙江大学夺得过一次世界总决赛冠军。
三、ACM程序设计竞赛对学生能力的培养
1.培养学生分析问题和解决问题的能力。ACM程序设计竞赛主要考查学生利用程序来解决一些实际问题的能力,竞赛题目以其难和新来激发学生的兴趣。对于一道竞赛题目,参赛队员首先要分析它的解题思想,它属于哪种题型,可以基于哪个经典算法来求解,然后再来编写程序,而且在编程时还要注意一些优化,这样才不至于超时。它通过任务驱动的方式,让学生在解难题的过程中,去构思时间和空间复杂度都能满足要求的完美算法,这将充分考验参赛队员的分析问题和解决问题能力。
2.锻炼学生编程的逻辑思维。ACM程序设计竞赛强调独立思考,鼓励标新立异,这有利于培养参赛队员的逻辑思维能力。无论从事什么工作都有一定的思维方式,写文章有写文章的思维方式,做生意有做生意的思维方式,写程序也一样,有自己的一套思维方式,熟悉了这种思维方式,写起代码来就像写文章一样得心应手,想什么写什么,把大脑里的内容用代码完美地表现出来。此外,许多竞赛题目无固定解题模式,数百条苛刻的测试数据使得编程失误在所难免,选手在不断的修改错误、完善程序中,求真务实的科学态度也得到了培养。
3.使学生收获编程的知识和经验。学生在课堂上学习了C程序设计、C++程序设计和算法设计与分析等课程,但由于理论课中学时有限,使得授课内容比较基础,知识传授也不够全面。编程是一门技术,但凡是技术的东西不去练的话必然生疏,参加竞赛可以很好的巩固这些基础性的知识,同时还能得到扩展。参赛过程中,通过学习、熟知各种算法,可以很大的开阔自己的视野;通过竞赛能进一步强化、拓展相关学科知识的深度和广度,知道的多、了解的多终究不是坏事。更主要的是,相关算法的设计思想会潜移默化的影响学生代码的编写,提高代码编写的质量。
4.培养学生的团队协作能力。竞赛既考验学生个人运用计算机来分析问题和解决问题的能力,又考验团队配合能力,深受广大大学生的喜爱。参加竞赛的都是一个团队,学生总是看到或听到“团队协作”这个词,但是始终体会不到那种实感,而在参加ACM竞赛后,学生能切身体会到团队的力量,队员们一起共同解决一个问题后的那种成就感只有身在其中才能体会的到。还有,参加竞赛能使学生交到很多志同道合的朋友,队员们都有着相同的兴趣爱好,在一起学习、聊天、讨论,这种良好的学习氛围有助于提高学生的学习效果。
总之,ACM程序设计竞赛为提高学生的实践能力与优秀人才的脱颖而出提供了很好的机会和条件。
四、ACM程序设计竞赛对学生就业的促进作用
目前,国内许多知名IT企业,如华为、阿里巴巴等公司也越来越重视ACM竞赛,它们会赞助一些ACM赛事,比如每一年度的亚洲区预选赛。对于ACM竞赛参赛队员,如果毕业后到这些企业去面试,那就有可能从众多应聘者当中脱颖而出,成功求职。
通过ACM国际大学生程序设计竞赛的开展,使得学生有了更多的实践机会,学生不再害怕编程,而且能编出高效的程序,这将极大地提高学生的实践能力;开拓了学生的视野,增强了学生所学知识的广度和深度,增强了学生的团队合作意识,便于在学生中树立典型,起到示范作用,促进创新型人才的培养;极大地激发学生学习程序设计类课程的兴趣,变被动地学为主动地学,充分带动学风,从而提高教学效果和人才培养质量;参赛获奖证书和参赛经历将成为将来学生就业的一个重要资本,成为了进入大企业、好企业的敲门砖,充分带动学生就业。
笔者统计了黑龙江科技学院参加过ACM竞赛活动的已经毕业的学生的就业情况,参加统计的学生12人,平均月薪达到了7308元,参加工作时间最长的三年多,最短的仅为4个月(统计时间为2012年11月)。所有学生从事的工作均为专业相关,且均是项目组的主要成员。有的学生还创立了自己的公司,未来发展前景一片光明。
[基金项目:本文系2012年黑龙江科技学院教学研究项目,项目编号:JY12-99]
参考文献:
1.郭嵩山,王磊,张子臻.ACM/ICPC与创新性IT人才的培养[J].实验室研究与探索,2007(12)
2.王磊.ACM-ICPC竞赛中的团队合作[J].计算机教育,2006(3)
3.李文新.ACM参赛教练:收获,不止是心灵上的[J].计算机教育,2006(3)
4.习慧丹,胡洋.高校计算机专业程序设计课程教学改革探讨[J].信息技术与信息化,2012(3)
(作者单位:黑龙江科技学院计算机与信息工程学院 黑龙江哈尔滨 )
(责编:贾伟)
查看全文
false