依托程序设计竞赛,提高计算机专业学生培养质量

时间:2022-05-21 03:16:35

依托程序设计竞赛,提高计算机专业学生培养质量

摘要:程序设计能力是计算机专业学生最重要的能力之一。本文总结过去几年组织学生开展程序设计竞赛的经验,探索出一条运用程序设计竞赛提高学生程序设计能力的新途径,从而可为提高计算机专业学生的培养质量,进一步拓宽创新素质教育提供参考。

关键词:程序设计;竞赛;教学改革;素质教育

中图分类号:G642 文献标识码:A

目前,各高等院校积极组织学生参加各种学科竞赛,把各种学科竞赛活动看作是提高学生培养质量的重要措施和手段。其中,大学生程序设计竞赛是目前在我国高校中影响范围、参与程度和竞赛水平等方面都处于前列的竞赛项目之一。本文将探讨怎样依托于程序设计竞赛,提高计算机专业学生程序设计的能力,从而提高计算机专业学生培养的质量。

1计算机专业学生程序设计能力的重要性

计算机专业作为实践性很强的工科专业,本科学生无论毕业后踏上工作岗位,还是继续进行研究生的学习,程序设计能力的高低始终是衡量一名计算机专业学生能力高低的最重要指标,是影响学生今后发展的一项重要的技能。

程序设计不仅需要掌握一定的基础知识,同时还需要具备严谨的逻辑思维能力,对培养学生的创造性大有好处。程序设计需要程序设计语言基础、数据结构、算法设计与分析等多门课程的支持,学习过程枯燥、难懂、持续时间长,特别在程序调试阶段,大部分学生没有兴趣和耐心去查找错误。很多学生都反映程序设计语言难学,程序更难编写,这些学生往往拷贝他人源代码应付检查,非常不利于教学质量的提高。

但是,计算机学科是一门应用学科,利用计算机解决现实存在问题的关键就在于是否能设计出相应的软件产品。据统计,我国拥有计算机本科专业的高等院校达到500余所,约占全国679所本科院校的75%,在校学生约27万余人,约占理工科在校生总数的14.6%,计算机专业在单个专业的设点数和单个专业的在校生总人数方面都位居全国本科专业之首。但是,以此形成鲜明对比的是,我国软件设计开发人员缺乏,特别是高级人才严重缺乏。背后的原因很多,但是,最重要的一点,就是我们的学生程序设计能力不高,本科学生培养质量有问题。因此,提高学生的程序设计能力,是提高计算机专业学生培养质量的关键一步。

2鼓励学生参加程序设计竞赛,提升学生的程序设计能力

要提高学生程序设计的能力,除了学习相关理论课程外,花大量时间去练习是必不可少的。对于大多数学生来说,程序设计难度大,枯燥无味,对上机编程练习的兴趣不高,宁愿把时间花在打游戏、上网等娱乐活动上,也不愿意上机练习编程。

程序设计竞赛试题从现实生活中抽象出来,涉及数据结构、算法设计与分析、组合数学、人工智能、计算几何等多学科领域知识,有些问题没有统一的最优解法,要求参赛者在限定的时间内,综合运用所学知识对问题进行认真分析、研究、归纳、整理,进行抽象化、模型化,并经过编程调试、提交测试等严格步骤完成竞赛,有相当难度。程序设计竞赛体现了对计算机专业学生的素质教育,能培养学生的创造能力,培养学生的综合能力,激励学生的创新能力,培养学生的科学素质,锻炼学生的心理素质,提高学生的团队素质。因此,开展程序设计竞赛,能提升学生的程序设计能力,也能提升学生运用各个方面知识解决问题的能力。

但是,要在程序设计竞赛中取得好的成绩,学生仅仅有兴趣是远远不够的,还必须经过长时间的艰苦训练。要使学生做到这些,需要运用合理的激励机制,对参赛学生进行正确的引导。管理学中的马斯洛需求层次理论对参赛学生激励机制的形成具有重要的指导意义。

马斯洛需求层次理论认为,人的需求分为生理、安全、社交、尊重和自我实现五个层次;人的行为受到需求的影响和驱动,但是只有尚未满足的需求才能影响人的行为;人的行为是由主导需求决定的,对人的行为方向起决定作用的就是这个人在这一时期的主导需求。大学生在父母和学校的支持下,生理、安全、社交和尊重这几个层次的需求,在这一阶段暂时得到基本满足,他们的主导需求是毕业后早日自我实现。又因为想参加竞赛的学生往往是同龄人中的高素质群体,自我实现的需求更为强烈。那么大学生通过何种方式来自我实现呢?主要有两种途径:毕业后从事自己理想的职业,在工作中实现自我;毕业后攻读研究生,在学习和科研中实现自我。学校可以通过程序设计竞赛来引导计算机专业学生实现自我,对参赛学生形成有效的激励机制。

除了通常的物质奖励外,最重要的是体现在其毕业后的去向上。对于毕业后打算找工作的学生,可以通过学校、学院的推荐和引导,使工作单位优先录用竞赛中成绩优异的学生;对毕业后计划攻读研究生的学生,让在竞赛中获得一定等级以上的学生获得免试攻读硕士研究生的资格。这种激励机制可以使很多有专业特长的学生自发地、积极地参加竞赛并努力争取好的成绩。

3程序设计竞赛的组织与培训

要取得程序设计竞赛的好成绩,就要挑选挑选并组织一支高素质的学生队伍,并科学训练,不断提高训练水平。

我们首先对学生进行宣讲,介绍各种学科竞赛,其中最重要的就是程序设计竞赛和数学建模竞赛,并播放往年到外地参赛的图片,介绍参赛获奖队员被保送研究生和推荐到较好的工作单位的情况,并找一些具有代表性的赛题给学生进行初步的了解,提供竞赛介绍、赛题下载的网址,给一周的时间让学生进行报名。

我校的计算机专业已经开设了“数学实验”作为必修课,能让学生学习到一些程序设计竞赛和数学建模竞赛中用到的一些相关知识。但是,课程时间有限,不能进行深入的指导。考虑到参加程序设计竞赛和数学建模竞赛的学生中,很大部分有重叠,并且两种竞赛所用的知识也有很多部分是重叠的,所以,我们把两种竞赛的培训合到一起进行,安排在周六进行统一的培训辅导。

合理的培训计划是保证程序设计竞赛健康发展的关键。我们的整个培训过程划分成两个阶段:

第一,理论基础培训阶段,根据竞赛所涉及的知识,讲解计算机、数学等相关的知识,拓宽参赛学生知识面,采用课堂辅导+自学方式进行。我们组织了7名非常有经验、认真负责的指导教师,对这两种竞赛所用到的知识进行了划分,例如:大数问题、排序、数论、计算几何、近似算法、组合数学、搜索技术、动态规划、图论等等。每位指导教师选择1~2类进行认真准备,为学生进行讲解。每周布置和讲解相关的题目,要求学生进行训练。

第二,赛题实战训练阶段,按不同知识点对历届典型竞赛题目进行分类,对特定学生进行特定类型题目的训练。在第一阶段的练习过程中,寻找程序设计方面好的“苗子”,把这些优秀学生分为3组,每位学生在学习所有知识的同时,特意专攻2~3类问题,每组学生专攻问题尽量不交叉。参赛时,把他们进行搭配,使得3人的参赛队伍里面,每组各有1名学生,使得对于任意的一类问题,起码有一位学生较为精通。

鼓励学生报名注册参加百度之星程序设计大赛、TopCoder大学生程序设计挑战赛等竞赛。在每次竞赛结束后,针对这些竞赛过程中出现的问题来进一步调整培训内容。这种边赛边学习的教学模式能起到事半功倍的教学效果,也能使学生坚持完成整个培训计划。

在培训过程中,要注意利用国内很多高校提供的ACM竞赛平台,让学生选择一个平台,在上面注册自己的账号,与各个高校的同行相互切磋,交流心得和体会,这会使学生感到自我实现的成就感。经过培训,做了一些上机练习题后,这些学生的程序设计能力会有质的提高。

4在国内可参加的程序设计竞赛介绍

上一篇:软件工程综合性课程设计的教学实践 下一篇:计算机实验教学的“四个三”教学模式