大学生计算机程序设计竞赛相关课程的教学改革
2014-09-02杨玉军
杨玉军
(怀化学院 计算机工程系,湖南 怀化 418008)
大学生计算机程序设计竞赛相关课程的教学改革
杨玉军
(怀化学院 计算机工程系,湖南 怀化 418008)
为培养学生全方位多角度分析问题和解决实际问题的能力,促使和调动学生学习的积极性,本文提出一种基于大学生计算机程序设计竞赛的课程教学体系,将大学生计算机程序设计竞赛机制引入到相关课程的常规教学中,改变了课程的传统授课方式和教学形式.经过4年的改革尝试,实践结果表明,这样的教学模式能够培养学生的自主学习能力,激发学生的学习兴趣,提高学生的实践能力,最终达到培养学生全方位多角度分析问题和解决实际问题的能力.
课程教学改革; 全方位多角度分析问题; 自主学习能力; 计算机程序设计竞赛
0 引言
在把美国计算机协会(ACM)举办的大学生程序设计竞赛(ACM/ICPC)引入我国高校后,我国大学生计算机程序设计竞赛就此应运而生了[1].大学生计算机程序设计竞赛有利于培养学生创新精神和团队合作能力,培养严谨的思维能力和全方位多角度分析问题的能力,最终达到提高学生运用知识解决实际问题的能力和实践能力[2].竞赛充分利用了有限的教学资源和人才优势,因材施教,其授课方式或训练形式与常规课程的教学有显著的不同,成功的学科竞赛授课方式和培训形式应用于常规教学将大大提高相关课程的教学质量和效果[3-7].
2005年湖南省计算机教学委员会首次引进国际大学生程序设计竞赛,并举办第一届湖南省大学生计算机程序设计竞赛,以后每年举行一次.自2005年以来,通过多年的竞赛培训,不断地探索和尝试了各种方法,积累了一些经验,并取得了较为满意的成绩.结合大学生计算机程序设计竞赛规则和在线培训系统,并逐步将竞赛培训方法和经验应用到常规课程教学中,如:“数据结构”、“C++程序设计”、“Java语言程序设计”、“计算机算法分析”、“C语言程序设计”等.在保证学生课程常规教学目标实现的同时,提高他们的多角度分析问题的能力、团队协作能力和解决实际问题的能力.
1 基于大学生计算机程序设计竞赛的课程教学体系
要想在国际ACM/ICPC或湖南省大学生计算机程序设计竞赛中取得较好的成绩,学生除了需要深入掌握各种计算机算法和数据结构的知识外,还需要拥有扎实的数学知识和较好的计算机程序设计能力,包括计算几何、数论和组合数学等数学知识,熟练使用C语言程序设计、C++语言程序设计、Java语言程序设计中至少一种程序设计语言,并具备多角度全方位分析问题的能力.大学生计算机程序设计竞赛的培训采用模块化的教学方法,把培训内容分成很多个知识模块,集中几天完成一个模块的教学和训练,反复练习、讲解和讨论,以最快的速度让学生理解、掌握和灵活应用该模块的知识.为了提高效率,一般在具有自动评判能力的计算机程序设计在线评判系统(Online Judge)上进行日常训练,把一个或多个考察的知识点拟成题目,每个题目参照竞赛规则具有特定格式和实际问题背景.学生通过全面的思考后完成解决问题的程序代码设计,认为正确后在线提交程序代码,计算机在线评判系统会自动编译该代码,运行并评判运行结果是否正确,并立即给出评判结果.计算机在线评判系统提供了一个全天候的练习和学习平台,学生可以在任何自由时间内联网学习和练习,不受时间和空间的限制,可以迅速掌握各种相关算法和数据结构等知识,并能提高学生的自主学习能力和解决实际问题的程序设计能力.
图1 基于程序设计竞赛的课程教学体系
基于大学生计算机程序设计竞赛的课程教学体系如图1所示,该体系以大学生计算机程序设计在线评判系统为核心,在课程的常规教学中嵌入具有实际问题背景的程序设计竞赛题目,以分析和讲解竞赛题目引入常规教学内容,培养学生解决实际问题的能力,课程的实践教学完全以程序设计竞赛的形式开展,每次实训课以比赛的形式安排一次实训练习,要求学生在上课期间完成比赛,并实时显示做题情况,实时反映上课班级学生做题成绩的排名,及时发现学生存在的问题,以便下次上课时有目的地分析和解决学生普遍存在的问题;同时把各个知识点分布在每一个竞赛的题目中,通过分析比赛结果,更加精确地统计学生对每个知识点的掌握程度,同时可以对多位学生的解题思路进行综合汇集,给出某个实际问题的多种解题方法,开阔学生的视野,培养学生的发散思维和全方位多角度分析问题的能力.通过分析学生普遍存在的问题进一步反馈到课程的理论教学中,可以非常清楚地确定课程教学的实际重点和难点内容.在课程外拓展学习方面,对计算机程序设计竞赛感兴趣且有较好基础的学生组成竞赛参赛预备队,参加每周的课外培训训练,讲解更加全面和深入的内容,使学生深入理解相关内容和解题方法,学生也可以通过自学和互相讨论接受更多的知识和更广泛的指导.
在基于大学生计算机程序设计竞赛的课程教学体系中,大学生计算机程序设计竞赛和常规课程教学相辅相成、相互促进.学生在常规课程学习的过程中,通过大学生计算机程序设计竞赛及其训练形式,激发其运用课程知识分析和解决实际问题的兴趣,培养其全方位多角度分析和解决问题的实践能力,从而更好地理解、掌握和灵活应用课程知识;同时在常规课程教学中实施大学生计算机程序设计竞赛教学方法和训练形式,有利于课程常规教学的规范管理,提高教学效率和效果,同时也能尽早地发现适合大学生计算机程序设计竞赛的参赛选手,以便日后加以培养.
2 基于大学生计算机程序设计竞赛的课程教学实践
2.1 竞赛相关课程改革
依托我校大学生计算机程序设计竞赛培训,对“数据结构”、“C++程序设计”、“Java语言程序设计”、“计算机算法分析”、“C语言程序设计”和“ACM程序设计基础”等课程常规教学过程进行了改革,其改革路线图如图2所示.
图2 竞赛相关课程教学改革路线图
课程教学改革路线图简单描述如下:(1)构建程序设计竞赛典型赛题或根据竞赛规则自拟有代表性的题目,即精选部分竞赛题目进行修改后,将其作为课程常规教学中的实例,通过典型赛题的分析和讲解,培养学生应用课程知识来分析和解决实际问题的能力;(2)深入研究课程常规教学中的实训大纲,将实训课分解为多个计算机程序设计竞赛赛题,引入实际问题背景,使其既符合大纲要求,又符合竞赛规则,形成标准竞赛题目,并适合在计算机程序设计在线评判系统中进行自动评判;(3)在课程教学进程中极容易发现优秀学生,并劝导其加入“竞赛预备队”,跟踪与培养这些优秀学生,还可以让其成为课程教学的有力帮手;(4)推荐这些优秀学生参加各级大学生程序设计竞赛,通过举办校级比赛和月赛,逐渐让班上其他学生发现和认可这些优秀学生,并以此为榜样带动班级其他学生进行课外学习,进一步深化课程的教学,培训学生的团队合作精神和解决实际问题的综合能力.
课程常规教学中的每项实训课题均被改造为10至20道计算机程序设计竞赛题目,每门课程要求设计600题以上,让学生在课外完成,并要求每位学生一个学期至少完成100题,优秀学生完成300题以上,否则影响课程成绩,通过要求学生多做题目来完善其课程知识结构.
2.2 问卷调查和效果分析
为检验基于大学生计算机程序设计竞赛的课程教学改革的实施效果,在2009和2010级计算机专业必修课程“计算机算法分析”、“数据结构”及“C语言程序设计”等改革课程的学生中进行了问卷调查,共发放问卷624份,收回有效问卷596份,调查内容包括:(1)对课程引入程序设计竞赛机制的课程教学是否满意?(2)对课程引入程序设计竞赛的实例是否偏难?(3)对引入程序设计竞赛的题目是否能培训多角度分析问题的能力;(4)基于程序设计竞赛的教学模式能否培养动手能力;(5)基于程序设计竞赛的教学模式中竞赛式课内实训是否更加有趣,易于培养在压力下自助学习的能力和竞争意识;(6)基于程序设计竞赛的实训教学能否培养团队合作意识和协作学习意识;(7)基于程序设计竞赛的教学模式是否不仅能学到课本上的理论知识,而且能与实际问题相结合;(8)基于程序设计竞赛的教学模式是否起点太高,不容易上手;(9)在课程教学中引入竞赛机制是否对学习有帮助;(10)是否希望将基于程序设计竞赛的教学模式运用在后续相关课程的教学中.
调查结果表明:学生充分肯定了在“计算机算法分析”、“数据结构”及“C语言程序设计”等课程教学中引入程序设计竞赛机制后的好处:(1)91.1%的被调查者认为对课程引入程序设计竞赛机制的课程教学比较满意;(2)19.6%的被调查者认为对课程引入程序设计竞赛的有些实例偏难;(3)83.4%的被调查者认为对引入程序设计竞赛的题目能培训多角度分析问题的能力;(4)79.7%的被调查者认为基于程序设计竞赛的教学模式能培养动手能力;(5)90.8%的被调查者认为基于程序设计竞赛的教学模式中竞赛式课内实训更加有趣,易于培养在压力下自助学习的能力和竞争意识;(6)69.1%的被调查者认为基于程序设计竞赛的实训教学能培养团队合作意识和协作学习意识;(7)65.3%的被调查者认为基于程序设计竞赛的教学模式不仅能学到课本上的理论知识,而且能与实际问题相结合;(8)29.4%的被调查者认为基于程序设计竞赛的教学模式起点太高,不容易上手;(9)87.2%的被调查者认为在课程教学中引入竞赛机制对学习有帮助;(10)71.8%的被调查者认为希望将基于程序设计竞赛的教学模式运用在后续相关课程的教学中.分析调查结果发现,学习成绩好的学生100%希望采用程序设计竞赛的教学方式进行教学,避免学生死记课本上的知识内容而不会理解应用,比赛的规则迫使他们深入学习相关内容,进一步训练其具有全方位多角度分析问题的能力;与此同时却发现成绩差的学生中,有70%以上的学生反对这种方式,也许是采用这种方式后,成绩评定更加公平和客观,这些学生无法得到好成绩,甚至考试不及格的原因.近期随机调查了2007、2008和2009级毕业的部分优秀学生,从调查结果发现几乎都认为这样的方式很好,对就业后的个人发展非常有利,能承担起企业软件项目的重要任务和核心工作,有很多后悔没有加入程序设计竞赛队培训、没有机会把知识学透学精;同时也共同指出对刚开始的学生或基础差的学生入门有点困难,需要一段时间的帮带着学习,只凭任课教师来辅导是远远不够的,建议组建怀化学院大学生ACM程序设计协会,希望每周给大一、大二的学生开课辅导,解决入门的常见问题.在综合考虑了各方因素后,于2013年上半年组建了怀化学院大学生ACM程序设计协会,每周休息日安排2次免费上课辅导,上课安排在周六或周日,每次3-4小时,上课教师由大学生计算机程序设计竞赛教练老师和获省级三等奖以上或国际大学生程序设计竞赛亚洲赛区获奖的学生担任,经过一年的尝试,目前已经取得了较好的效果,具体结果待该方法实践2年后才能统计分析.
3 结束语
基于大学生计算机程序设计竞赛的课程教学模式将程序设计竞赛的比赛规则与竞赛培训的授课方式和训练形式引入到课程的常规教学中,适合于与竞赛相关的课程,如“数据结构”、“C++程序设计”、“Java语言程序设计”、“计算机算法分析”、“C语言程序设计”和“ACM程序设计基础”等计算机专业课程,这种教学模式能够激发学生的学习兴趣和竞争意识,能够锻炼学生的多角度分析问题的能力和实践动手能力,同时可以培养学生的团队协作意识和自主学习的能力,提高他们学习的积极性和效率,达到熟练掌握课程主要内容的目的.目前只针对与程序设计竞赛相关的6门计算机专业课程进行了小范围的改革与探索,没有涉及到其它课程,希望通过尝试形成成功经验后再逐步推广到其它课程.从问卷调查和结果分析显示该教学模式在保证学生常规教学目标实现的同时,提供了客观公平有效的考核方式,促使和调动了学生学习的积极性,提高了学生全方位多角度分析问题和解决实际问题的能力等方面取得了较好的成效.
[1]郭嵩山,王磊,张子臻.ACM/ICPC与创新型IT人才的培养[J].实验室研究与探索,2007(12):193-197.
[2]Yunzhou Zhang,Chengdong Wu.Innovation Quality Cultivation of College Students by Scientific Contest[A].First International Workshop on Education Technology and Computer Science[C].2009:515-518.
[3]陈志,李梦泽,马嫣,等.基于ACM程序设计竞赛的常规教学改革[J].电气电子教学学报,2011(6):20-22.
[4]洪宝仙,龚冰冰,鲍思伟.地方高校学科竞赛的现状与思考[J].台州学院学报,2011(4):71-74.
[5]赵嫦花,彭小宁,李晓梅.大学计算机课程教学对培养学生计算思维的影响[J].怀化学院学报,2013(11):97-99.
[6]万敏.构建以学科竞赛为契机的大学生能力培养模式[J].西昌学院学报:自然科学版,2011(1):150-152.
[7]周治瑜,王瑞斌,胡丽华,等.学科竞赛是培养大学生创新素质的重要载体[J].现代农业科学,2008(5):105-106.
TheTeachingReformofCollegeCoursesRelatedtoComputerProgrammingContest
YANG Yu-jun
(DepartmentofComputerEngineering,HuaihuaUniversity,Huaihua,Hunan418008)
To develop students more comprehensive perspective of the ability to analyze and solve practical problems,to promote and mobilize the enthusiasm of students,we propose a system based on college teaching computer programming contest,college students will be introduced to computer programming competition mechanism conventional teaching related courses,and changed the way the traditional curriculum and teaching in the form of lectures,after four years of reform attempts,practice teaching model results show that this can foster students' ability to learn,to stimulate student interest in learning,improve their practical ability to ultimately achieve all-round ability of students to analyze problems and multiple perspectives to solve practical problems.
teaching reform; comprehensive multi-angle analysis of the problem; self-learning ability; computer programming contest
2014-05-04
怀化学院教改项目“基于创新精神和实践能力培养的模块化教学模式在学科竞赛中的实践研究——以大学生程序设计学科竞赛教学为例”(201125);湖南省第十届教学成果三等奖“以学科竞赛为平台,计算机专业学生实践与创新能力培养模式的探索与实践”(湘教通【2013】541号).
杨玉军,1978年生,男,湖南邵阳人,讲师,研究方向:计算机程序设计竞赛.
G642.3
A
1671-9743(2014)11-0090-04