李昊 周明
摘 要:在信息技术相关专业进行实践教学的过程中,提出了以学科竞赛为驱动,通过开展系统的学科竞赛训练与培育,实施多层次、多角度、可持续人才培养的创新教学模式,以达到培育高素质高能力专业人才的教学目的。分析大学生程序设计竞赛对计算机实践教学的重要作用,指出竞赛驱动实践模式能够有效地进行创新人才的培养。
关键词:大学生程序设计竞赛;信息技术;实践育人;竞赛驱动
中图分类号:G642 文献标志码:A 文章编号:1001-7836(2018)09-0051-03
引言
信息技术是管理和处理信息相关技术的总称,信息技术相关专业主要包含计算机科学与技术、信息管理与信息系统、软件工程、网络工程、物联网、电子商务等。这些专业的共同特征是以现代信息技术为主要学习和研究内容,具体包括计算机技术、微电子技术以及通信技术。这些技术对于专业学生来说,包括管理、开发以及应用几个方面的知识、技能、操作的学习。
全球信息化的飞速发展,计算机、电子以及网络技术的更新变革,对于信息技术也不断提出更高的要求。大数据、物联网、云计算和移动互联,成为信息技术的最新发展形态。随之带来了产业的升级转型,“互联网+”的新的生态形式的出现,推动着社会变革,成为新的生产力的重要代表。
信息技术的发展对于实践的要求更高,计算机系统的操作、集成电路设计、软件开发技术、嵌入式系统设计与开发、分布式与网络技术应用等,都要求在人才培育过程中强化实践育人的过程,夯实实践技能,以适应信息技术行业对人才的需求。
信息技术学科的特点,要求与之适应的教育教学观念,按照专业人才能力培育的要求,设置相应的培育方案和强化实践教学的课程体系,同时,结合科研项目、科技竞赛进一步提高学生的实践与创新能力[1—5]。
本文以与信息技术紧密相关的大学生程序设计竞赛为实践育人的驱动力和切入点,将这项重要的学科竞赛作为信息技术学科教学改革、实践育人、提升学生专业素质的重要内容,对于这种竞赛驱动的教育模式进行分析,并结合具体实例,进行深入探索。
一、大学生程序设计竞赛简介
中国大学生程序设计竞赛(China Collegiate Programming Contest,简称CCPC)由中国大学生程序设计竞赛协会主办,是一项向世界大学生开放的展示大学生程序设计能力、创新能力以及团队合作精神的国际性年度赛事。该比赛是目前国内参与学校最多,竞赛水平最高,获奖含金量最高的比赛,该项赛事已经被很多学校列为国家级A类竞赛。
2016年中国大学生程序设计竞赛按照区域进行了4场比赛,分别在吉林大学、中国科技大学、杭州电子科技大学和浙江大学宁波理工学院举办。中国大学生程序设计竞赛比赛形式与ACM/ICPC类似,由在校大学生参赛,在规定时间内根据解題数量和解题时间进行排名,比赛结果由机器评测系统自动进行评判,保证比赛的公正性。
中国大学生程序设计竞赛与ACM/ICPC在组织结构和赛区分配上有所不同。ACM国际大学生程序设计竞赛(International Collegiate Programming Contest, 简称ICPC)是由美国计算机协会(Association for Computing Machinery, 简称ACM)主办的面向大学生程序设计能力的比赛,于1996年由上海大学引入中国大陆。该竞赛由各大洲区域赛(Regional Contests)和全球总决赛(World Finals)两个阶段组成[6—7]。
大学生程序设计竞赛在各个省以及地区还有相应的区域赛,例如吉林省大学生程序设计竞赛,由吉林省教育厅主办;东北地区大学生程序设计竞赛,由东北三省和内蒙古自治区计算机学会主办。
大学生程序设计竞赛从比赛的组织、形式和内容来看,都代表了对信息技术实践最集中的考核。从比赛组织来看,是信息技术专业参与人数最广,参与水平最高的比赛;从比赛形式来看,比赛考查了具体的程序设计能力、英语阅读分析能力和团队配合能力;从比赛内容来看,借助计算机程序设计语言,涉及到信息技术相关的多项课程,例如数据结构、算法分析与设计、离散数学、组合数学、计算几何、可计算性与计算复杂性、人工智能、数论、图论、概率与数理统计等。
二、实践教学模式构建
(一)学科竞赛机制建设与完善
学科竞赛实践教学有别于传统实践教学,要做到“三个结合”:课内学习与课外练习相结合,被动听课与主动学习相结合,常规考核与比赛竞争相结合。通过构建特有的实践教学模式,培养有主动学习能力、创新思维的高素质专业人才。
1竞赛团队建设与选拔
大学生程序设计竞赛有别于以个人形式参与的其他竞赛形式,强调团队配合,在参与竞赛的三人小团队建设的同时,需要构建一个多人参与,既相互竞争又互相促进的竞赛团队。
团队的建设首先要打破年级、班级和专业的限制,信息技术相关专业的同学形成一个综合性多方向的集体,并包含不同年级同学。这种模式,使得多种实践模式综合在一起,极大地促进了团队中队员的各项素质的综合发展。比如软件工程专业的学生,具有较强的程序设计语言的实践技能,在解决优化问题的过程中,信息管理与信息系统专业同学可以以经济管理与运筹学的思维模式,辅助其对问题的剖析和深入考查来解决工程问题,又可以借助物联网工程、网络工程专业的理论技能的帮助。对于不同年级的学生,高年级可以对低年级同学在实践过程中遇到的问题,通过自身经验,快速发现问题和解决问题,并协同解决独立思维难以突破的引申问题。
竞赛团队在选拔过程中,在充分了解学生个体特长与弱势的基础上,对其进行各项素质的综合考量,通过科学的模型进行个人的评估分级,真正做到挖掘每个学生的全部潜力,为接下来的实践育人打下良好的基础。
具体的选拔包括相关学科的学习绩点、程序设计训练的时间与效率、定期的程序训练比赛成绩以及个人综合素质的考量。每学年年初进行人员初选,接下来每个月进行人员的增删调整,期末进行人员筛淘。通过团队有效的竞争机制,真正激发学生的“攀比”意识,极大地提高了学生的主观能动性,增强了学习的兴趣。
2规范科学的竞赛辅导
在实践育人过程中,基础理论的学习尤其重要,以竞赛为驱动,必须建立相应规范科学的辅导机制。
对于大学生程序设计竞赛,首先要掌握的技能是程序设计技能,对于计算机科学与技术、软件工程等专业来说,C语言程序设计是学科基础课,对于其他与信息技术不相关的专业来说,程序设计语言也作为大学生计算机基础公共课在低年级开设。但是与课程内容不同的是,竞赛对于实践的要求更高,要求完整的解决问题的方案与快速实现,并要求程序设计的效率与结果的准确性,充分考虑解决问题的时间复杂度与空间复杂度。这要求在实践过程中,进行有针对性的辅导。这些针对竞赛的辅导,对于学生参加以后的程序开发工作大有裨益,是传统教学的重要补充和知识体系的重要完善。
各个相关的理论课,从奠定良好的理论基础,到知识的融合升华,通常进行专项的内容辅导、练习和深化。比如解决最短路径问题,从数据结构课程的理论出发,到图论、动态规划的学习,进一步结合物联网、网络工程等实践问题,这要求有一个全局视角下的问题分析与指导,科学地定位问题,合理地问题分类,最终应用于实践,才真正达到育人的目的。
3可持续发展的育人机制
以竞赛驱动实践育人,并不是将竞赛作为实践环节的终点,而恰恰利用其掌握的多项技能,为接下来的课程实践奠定基础。大学生程序设计竞赛,要求团队在5个小时内,解决尽量多的问题,每个问题从考查基本算法出发,解决一个问题平均在1个小时左右,所以问题的难度和规模有所控制。而学生在竞赛技能的基础上,可以继续发挥团队配合的优势,在更长的时间和更广的问题空间中,解决更为复杂的技术或工程问题,一方面为将来相关应用类课程的学习进行足够的知识储备,另一方面也为随之而来的基于项目开发的竞赛积蓄力量。
通过竞赛团队的梯队建设,使得育人环节由学校与教师为发起者,向着能力强的高年级同学为发起者转变,实践的主体由课堂中的学生变成团队中的成员,这种全方位的“传帮带”,使得育人过程变成自组织的演变过程,保证了育人的可持续发展。
此外,请获奖学生担任程序设计课程的“实验员”,指导低年级同学的程序设计实践,是以竞赛为中心,辐射到对专业基础课的学习,从而带动学生整体水平的提高。
(二)竞赛模式下的传统教学改革
1人才培育方案的改革
竞赛驱动下,对于人才培育尤其强调因材施教,在培育方案改革的过程中,采用分级教学模式。培养方案中,在大学低年级两个学年的下半学期,开设多专业互选的竞赛实践类课程,平行开设一般实践类课程。对于不同实践能力和发展方向的学生,进行分流培养。这样,既保证了能力强的学生,在相关实践环节得到进一步的锻炼,也保证了其他同学继续巩固基础知识,提高自身水平。这种分级教学,使得专业学生整体的实践能力均得到了提升。
2关联性教学及人才培养
大学生程序设计竞赛对于信息技术专业的专业课程都有相关的要求,一些缺乏实践环节的学科基础课,也在竞赛驱动下增加了实践环节。比如高等数学、概率论、运筹学等数理分析课程,可以通过增加相应的程序设计解决问题的环节,作为理论的有效补充。这种与竞赛内容相关的关联性教学模式,能够有效提升学生对理论的理解和掌握程度,并促进学生对所学问题的应用领域的理解。
传统的计算机专业课程,例如数据库、操作系统、计算机网络等课程,同样与竞赛内容有着极强的关联性。计算思维的培养,正是这些课程实践的培育目标之一。
3实践教学的阶梯发展
竞赛驱动的实践教学,包含以下四个阶段,对应信息技术相关专业的各个学期:1—2学期,重点进行程序设計语言的实践和计算思维的锻炼,结合学科基础课程,重点考查学生的动手编程能力和问题分析解决能力;3—4学期,主要进行高级语言程序设计实践,例如C++ 和Java等面向对象语言的练习,模块化,模板化解决问题的能力,数据结构、算法优化等技能的培养,同时对计算机相关理论进行深入学习,对社会工程问题的计算机应用有初步认识;5—6学期,竞赛相关内容实践,通过参加各种级别的大学生程序设计竞赛,综合考查知识掌握能力和实践技能,这个阶段的教学包含团队培养、交流沟通能力、英语阅读和问题分析能力、高效快速解决问题能力的培养;7—8学期,项目开发实践能力培养,通过更大规模的团队协作,针对生产生活实际问题,利用信息技术手段,进行完整的项目开发,这一阶段的实践环节主要将理论讲授的课时转移到专业实习、课程实践、创新创业实践和毕业设计环节上,为最终的专业就业打下坚实的基础。
4多样化的考核机制
竞赛驱动的实践考核,不同于传统实践环节的考核,它具有更大强度、更短时间间隔的特征,考核手段更加多样化。
考核时间从传统的以学期为单位,缩短到以周、以天为单位,每天的做题量、每周的比赛成绩,都是考核的重要指标。对于某类问题,采用集中考核结束,分段延期重复考核的方式,比如:在3天内完成对某知识点的应用,通过一次小型的比赛进行考核,一周后,重复进行同样内容的测试,一个月后,增大问题难度继续进行考查。
考核机制除了完成题目数量,还进行比赛个人排名机制、团队排名机制,并引入“同比”“环比”等统计指标,并将问题难易程度引入权值,进行分类汇总和趋势分析,对每一个学生进行综合指标评测。这种多样化的考核机制,在实际比赛队伍分配中起到了决定作用,比赛结果进一步证明了考核的合理性和准确性。 根据考核结果,针对学生的情况进行动态调整,收到了良好的效果。
(三)程序设计竞赛训练平台与实践基地建设
1程序设计在线评测系统建设
程序设计竞赛实践,要求学生能够在短时间内编写解决问题的程序,并及时检验程序的正确性与效率,这些都需要一个能够在线实时评测的系统平台。而这个平台,应该包含以下功能:提供不同难度、不同类别的题目;对提交的题目解答进行实时的判定,通过设定时间限制和内存限制,给出题目的最终状态;查看提交代码,对代码进行查重;对解决问题的学生进行排名统计;自行组织比赛;后台管理员登陆等。
在线评测系统的建设,同时需要稳定高效的应用服务器,提供7×24不间断的校园网络与校外公网的访问,多线程在线提交与后台判定的抗高压能力。
程序设计在线评测系统的建设意义重大:对于教师管理员,可以通过系统实时了解学生的动态,实现每天考核,可以方便地组织比赛,促进学生竞技技能的提高;对于学生,可以通过系统进行程序设计实践,通过排名激发学生相互竞争的意愿,培育学生的兴趣,提高实践动手能力。
2实践基地建设
竞赛驱动的实践环节中,实践基地的建设也具有举足轻重的作用。实践基地可以有多种类型,完成信息技术相关的各种实践环节。一个固定场所的程序设计机房,通过规范的管理,采用严格的考勤制度,由具有不同技能水平的学生组成层级管理与辅导机制,多个相关学科的学生通过小组讨论、知识讲解、互相出题考核等灵活的操作方式,能够最大限度地提升学生的相关技能,收到良好的效果。
三、创新型人才培育结果
(一)参赛人数多,获奖水平逐年提高
通过竞赛驱动的实践育人的模式,每年可以保证足够多的学生参与到各级大学生程序设计竞赛中,所获奖项也不断提高,标志着学生信息技术专业实践技能的提高。以笔者所在计算机学院为例,近三年累计五十余人参加了各种类型的大学生程序设计竞赛,获得省级奖项16项,东北地区奖项1项,全国比赛奖项1项,成绩逐年提高。
(二)就业形势好,带动高层次就业
大学生程序设计竞赛,是考查学生对基本技能的掌握程度的竞赛,深受行业领先的公司的关注,被看作计算机界的奥林匹克竞赛。从IBM、Microsoft到Google都积极赞助相关赛事,國内的阿里巴巴、百度等公司也优先招聘在大学生程序设计竞赛中获得优异成绩的学生。而通过参与竞赛得到综合素质提升的大学生,能够胜任各项信息技术领域的相关工作,并且在就业之后,很快在领域中显示出突出的能力优势,获得更高的认可。
结束语
大学生程序设计竞赛驱动的实践育人,在信息技术相关专业,通过合理的运行模式,能够有效提升学生的实践能力,对于培育信息学科创新型人才能够起到非常显著的效果。通过阶梯性可持续的培育模式,促进了计算机实践教学的改革,也是实践育人理念的一次革新。通过积极的平台建设与应用实践,为创新型人才培育提供了一条卓有成效的发展路径。这种模式的应用实例与运行效果,也证明了其有效性和可行性。在后续的探索研究中,可以扩展到非信息技术相关的学科,将计算思维实践深入到各个学科领域,推动实践育人的全面发展。
参考文献:
[1]王世来,包镕.创新型人才培养与科技竞赛平台的构建[J].高等农业教育,2009,9(9):39—40.
[2]李玲芝,徐俊,易险峰.依托大学生计算机程序设计竞赛,探索信息学科创新型人才培养新模式[J].计算机教育,2009(12):92—93.
[3]朱蓉.依托程序设计竞赛,探索创新素质教育新模式[J].嘉兴学院学报,2007(5):117—119.
[4]周燕,曾凡智,杨广发.科技竞赛驱动及多知识点融合的计算机学科创新人才培养模式[J].计算机教育,2012(16):19—22.
[5]郑爱彬.以竞赛驱动信息设计能力培养[J].计算机教育,2015(1):33—35.
[6]郭嵩山,王磊,张子臻.ACM/ICPC与创新型IT人才的培养[J].实验室研究与探索,2007(12):188—192.
[7]田贤忠,刘楠,孙国道,等.ACM国际大学生程序设计竞赛学习模式探讨[J].高等教育与经济,2009,22(12):46—49.
(责任编辑:侯秀梅)