计算机软件类竞赛人才培养模式的探索与实践
王建芳
[摘 要]普通高校计算机软件类课程的教学一直以课堂讲授为主,对学生实践设计能力的培养非常欠缺。结合算法类(ACM/ICPC)和程序类对学生创新能力培养作用的项目研究,通过对学生团队实施规范化管理,有针对性地设置培养体系,采用以赛代练、以教带学和循序渐进的教学方法,促进学生算法设计能力、软件开发能力、逻辑思维能力以及综合素质的提高,并结合自身教学经验,探索大赛平台对软件类课程教学模式的改革途径。
[关键词]算法竞赛;软件开发;人才培养
[中图分类号] C961 [文献标识码] A [文章编号] 2095-3437(2016)06-0153-02
一、引言
随着高等教育的大众化,其办学模式应该由粗放型向精英型转化,在这一转化过程中,需要学生具有更高的创新能力和实践能力。学科竞赛对学生在某学科领域方面的基本知识和对实际问题的解决能力进行了考察,它可以大大提高学生的学习积极性,激发学生的潜能,有利于培养学生的创新精神和团队合作能力。计算机学科软件类竞赛尤为如此。目前,计算机软件类竞赛一般分两类,一是算法类,类似于ACM/ICPC,在规定的时间内由赛事组织者通过相关算法类题目来现场考查竞赛者对知识的运用程度,以组队形式或个人赛形式参赛。另一类是程序应用类,但此类应用程序是偏重于具有创新性的,一般以组队的形式参与,队员之间分工明确,参赛前将根据赛事方的规定将程序实现,由现场答辩环节来决定竞赛名次。
二、目前表现出的问题
(一)陈旧的人才培养模式
一方面,大多数高校在考核过程中采用的是传统的考核模式,这种考核模式仅仅是对教材基本理论知识的考核,且大多数为客观题,缺乏实例分析题和思考题,不利于培养学生对知识的综合运用能力和创新能力。另一方面,考核的形式比较单一,在考核形式方面,多采用传统的模式对理论教学能力和实践课程进行考核。考试内容也单一,多注重考核学生对基本知识的掌握程度,忽略了对学生综合运用知识解决实际问题的能力的考核。另外,考试题目也缺乏合理性,客观题占的比重最大,只有极少的案例分析,不利于培养学生的创新精神。
完整的教学过程,应包括理论教学和实践教学两部分,二者是相辅相成的。但是在实际考试中,大多是以“笔试”为主,基本没有上机操作考试,实践部分在计算课程总成绩过程中所占的比重甚少,甚至有些学校不将其算入总成绩。而且,大部分计算机专业的课程对学生的实际动手能力要求都比较高。为了帮助学生更深入地了解教材中的理论知识,在教学过程中,教师需要着重培养学生的实践操作能力,让学生在实践操作的过程中,加深对教材的基本内容的理解。
(二)课内实验过于模式化
首先,受考试形式的影响,大部分学生只关注考试,课程结业之后,很少有学生会对教材的知识点进行二次复习。陈旧的实验教学内容、描述性过重的实验、缺乏创造性和综合设计性的实验,导致学生的创造性思维难以形成。其次,大多数实验都不能锻炼学生解决实际问题的能力,很多实验的效果并不理想。再次,实验过程中所使用的指导方法都是由教师提出的,实验环境和实验指导书都由教师准备的,实验报告框架也都由教师设计的,学生只能在这种统一的方法按照已经设计好的方案来进行实验。
(三)学生平时实践无从做起
有些学生有心学好实践课程,课余也有时间,但不知做什么题,遇到问题不知该怎么办。学生遇到问题时虽然能从网络上查找答案,但能够得到满意答案的很少。
(四)缺乏协作意识和合作能力
在完成软件开发的过程中,团队的协作精神尤其重要。每个工作人员所掌握的专业知识都是有限的,这就需要领导根据每个员工的特点,有针对性地对其进行分工,使整个团队的力量得到最大发挥。然而,在对学生能力的培养过程中,往往最缺乏的就是对学生团队意识的培养。虽然偶尔会有部分课程会采用分组的形式进行,但是由于学生的知识水平不同,在操作过程中有的学生并未真正参与其中,自身的团队意识和协作能力并未得到提高。
(五)教师实践能力有待提高
部分教师上课只限于把课本知识照本宣科地传授给学生,这容易导致学生对此门课程失去兴趣。而且书本中的例子过于程序化,大部分是考查学生对基本知识的理解程度,难以选拔优秀的学生。
三、人才培养模式
(一) 以基础性教学为重点
对计算机专业来说,C语言的掌握程度决定着今后对计算机方面的发展,尤其是实践编程能力。可以在新生入校之际对理工科尤其是计算机相关专业的学生做程序类宣讲,对编程感兴趣的学生举办周末培训班,使其掌握基本的编程方法,同时指定高年级学生对其进行C语言基础的辅导,促进其实践能力的提高。同时给学生引进ACM竞赛模式的在线测试 OJ(Online Judge)系统,这可以使学生在平时实践过程中脱离书本上陈旧的习题,也可以解放教师批改作业的压力。
由于我校是在大学一年级的第二学期开设C语言程序设计课程的,对于大部分学生来说,在C语言学到一半的时候给学生做软件方面将来发展方向的专题讨论,可以使学生明确自己将来的努力方向。通过让学生在OJ系统上练习,对每个学生在规定时间内做题情况进行统计,可以为教师教学提供一个很好的参考指标,以此促进教学的改革,使“教”和“学”得到相互促进。
(二)以赛代练,集中集训
一方面,可以通过组织或者参加不同级别的集训或者暑期论坛等,提升实践指导教师素质和学生自身能力。另一方面,可以通过大量ACM/ICPC 题目的练习以及搭建ACM/ICPC 在线测试平台,促使学生发挥自主学习精神,自学所需算法和相关知识,弥补自身不足。
通过基础性教学重点的练习,每周对相关知识点进行周赛。周赛一般选择7-10道题以OJ的形式进行,通过周赛,选拔出实践能力强的学生进入ACM协会进行定期集中培训。同时利用暑期的黄金时间,对学生进行两个月的算法方面的专题讲座。周赛、月赛后的题目重点由学生讲解,对于难题由指导教师通过引导学生来集中讨论,集中讲解。对于未进入ACM协会集训的学生,可以参加每周的周赛,只要达到协会要求的做题数量和要求,随时可以成为协会中的一员。对于比赛中始终处于下游的学生,也可让其退出协会。通过“以赛代练”的机制,提高学生对知识的掌握能力。
(三)开展“传帮带”活动
学生在写算法的过程中遇到的很多问题都是基本语法和格式没有熟练掌握造成的,这些问题可以通过高年级或者编程能力强的学生的帮助来解决。当学生无法解决或者遇到共性问题时,由指导教师通过专题形式来讲解。
(四)算法到应用程序的过渡
对大一大二参加竞赛的学生来说,应以算法类竞赛为主。大三以后,在算法竞赛的基础上,让学有余力的学生学习面向对象程序的开发,将算法的思想加入到应用程序中,以开拓学生的编程能力,提升团队合作意识,提高学生的科研水平,为学习将来做毕业设计打下良好的基础。
(五)总结学科竞赛经验
参赛结束后,要及时进行总结,对比赛中的优点和不足进行分析,以此来提高自身的综合能力,为以后的学习和实践打好基础。算法竞赛类学科竞赛的题目常常涉及学科中的重要知识和核心技术,软件程序类常涉及创新性、队伍搭配的合理性和答辩环节等关键问题。教师通过认真指导,组织学生对不同的解决方法进行讨论,通过讨论、对比,优胜劣汰,以提高竞赛的效率,促进教学改革。
(六)教师自身能力的提高
选择了计算机,就选择了终生与时俱进,尤其是在程序设计方面,从面向过程到面向对象,从基于Windows/iOS平台,到目前基于Android / iPhone平台的程序开发,教师自身需要充电,以适应社会的需求,从而更好地将最新的技术应用到教学和指导学生参加学科竞赛中。
四、结束语
学科竞赛不仅促进了应用型人才的培养,同时也促进了高校为适应研究型教学所进行的教学改革。通过学科竞赛,可以促进学校的教学改革,为社会培养大量的创新型人才。另外,参加学科竞赛的选手,需要通过实践来进行选拔、训练和实战,这会大大增强学生的自主学习能力。通过宣传等活动,在校园营造良好的学习和竞争氛围,能达到以竞赛促进教学的目的。
[ 参 考 文 献 ]
[1] 朱月秀.基于ACM竞赛的C++程序设计课程教学改革[J].漳州师范学院学报(自然科学版),2012(1):96-99.
[2] 高和蓓.大学生程序设计竞赛研究与实践[J].计算机光盘软件与应用, 2011(24):222-223.
[3] 顾广耀,李翔昊,田原,等.漫谈软件作品竞赛有效开展的意义和方法[J].计算机教育,2008(6):44-45.
[4] 杨松涛,王斌,张海燕.从ACM/ICPC竞赛探讨大学生的能力培养[J].计算机教育,2010(24):16-18.
[5] 陈志,李梦泽,马嫣,等.基于ACM程序设计竞赛的常规教学改革[J].电气电子教学学报,2011(6):18-20.
[责任编辑:陈 明]
[摘 要]普通高校计算机软件类课程的教学一直以课堂讲授为主,对学生实践设计能力的培养非常欠缺。结合算法类(ACM/ICPC)和程序类对学生创新能力培养作用的项目研究,通过对学生团队实施规范化管理,有针对性地设置培养体系,采用以赛代练、以教带学和循序渐进的教学方法,促进学生算法设计能力、软件开发能力、逻辑思维能力以及综合素质的提高,并结合自身教学经验,探索大赛平台对软件类课程教学模式的改革途径。
[关键词]算法竞赛;软件开发;人才培养
[中图分类号] C961 [文献标识码] A [文章编号] 2095-3437(2016)06-0153-02
一、引言
随着高等教育的大众化,其办学模式应该由粗放型向精英型转化,在这一转化过程中,需要学生具有更高的创新能力和实践能力。学科竞赛对学生在某学科领域方面的基本知识和对实际问题的解决能力进行了考察,它可以大大提高学生的学习积极性,激发学生的潜能,有利于培养学生的创新精神和团队合作能力。计算机学科软件类竞赛尤为如此。目前,计算机软件类竞赛一般分两类,一是算法类,类似于ACM/ICPC,在规定的时间内由赛事组织者通过相关算法类题目来现场考查竞赛者对知识的运用程度,以组队形式或个人赛形式参赛。另一类是程序应用类,但此类应用程序是偏重于具有创新性的,一般以组队的形式参与,队员之间分工明确,参赛前将根据赛事方的规定将程序实现,由现场答辩环节来决定竞赛名次。
二、目前表现出的问题
(一)陈旧的人才培养模式
一方面,大多数高校在考核过程中采用的是传统的考核模式,这种考核模式仅仅是对教材基本理论知识的考核,且大多数为客观题,缺乏实例分析题和思考题,不利于培养学生对知识的综合运用能力和创新能力。另一方面,考核的形式比较单一,在考核形式方面,多采用传统的模式对理论教学能力和实践课程进行考核。考试内容也单一,多注重考核学生对基本知识的掌握程度,忽略了对学生综合运用知识解决实际问题的能力的考核。另外,考试题目也缺乏合理性,客观题占的比重最大,只有极少的案例分析,不利于培养学生的创新精神。
完整的教学过程,应包括理论教学和实践教学两部分,二者是相辅相成的。但是在实际考试中,大多是以“笔试”为主,基本没有上机操作考试,实践部分在计算课程总成绩过程中所占的比重甚少,甚至有些学校不将其算入总成绩。而且,大部分计算机专业的课程对学生的实际动手能力要求都比较高。为了帮助学生更深入地了解教材中的理论知识,在教学过程中,教师需要着重培养学生的实践操作能力,让学生在实践操作的过程中,加深对教材的基本内容的理解。
(二)课内实验过于模式化
首先,受考试形式的影响,大部分学生只关注考试,课程结业之后,很少有学生会对教材的知识点进行二次复习。陈旧的实验教学内容、描述性过重的实验、缺乏创造性和综合设计性的实验,导致学生的创造性思维难以形成。其次,大多数实验都不能锻炼学生解决实际问题的能力,很多实验的效果并不理想。再次,实验过程中所使用的指导方法都是由教师提出的,实验环境和实验指导书都由教师准备的,实验报告框架也都由教师设计的,学生只能在这种统一的方法按照已经设计好的方案来进行实验。
(三)学生平时实践无从做起
有些学生有心学好实践课程,课余也有时间,但不知做什么题,遇到问题不知该怎么办。学生遇到问题时虽然能从网络上查找答案,但能够得到满意答案的很少。
(四)缺乏协作意识和合作能力
在完成软件开发的过程中,团队的协作精神尤其重要。每个工作人员所掌握的专业知识都是有限的,这就需要领导根据每个员工的特点,有针对性地对其进行分工,使整个团队的力量得到最大发挥。然而,在对学生能力的培养过程中,往往最缺乏的就是对学生团队意识的培养。虽然偶尔会有部分课程会采用分组的形式进行,但是由于学生的知识水平不同,在操作过程中有的学生并未真正参与其中,自身的团队意识和协作能力并未得到提高。
(五)教师实践能力有待提高
部分教师上课只限于把课本知识照本宣科地传授给学生,这容易导致学生对此门课程失去兴趣。而且书本中的例子过于程序化,大部分是考查学生对基本知识的理解程度,难以选拔优秀的学生。
三、人才培养模式
(一) 以基础性教学为重点
对计算机专业来说,C语言的掌握程度决定着今后对计算机方面的发展,尤其是实践编程能力。可以在新生入校之际对理工科尤其是计算机相关专业的学生做程序类宣讲,对编程感兴趣的学生举办周末培训班,使其掌握基本的编程方法,同时指定高年级学生对其进行C语言基础的辅导,促进其实践能力的提高。同时给学生引进ACM竞赛模式的在线测试 OJ(Online Judge)系统,这可以使学生在平时实践过程中脱离书本上陈旧的习题,也可以解放教师批改作业的压力。
由于我校是在大学一年级的第二学期开设C语言程序设计课程的,对于大部分学生来说,在C语言学到一半的时候给学生做软件方面将来发展方向的专题讨论,可以使学生明确自己将来的努力方向。通过让学生在OJ系统上练习,对每个学生在规定时间内做题情况进行统计,可以为教师教学提供一个很好的参考指标,以此促进教学的改革,使“教”和“学”得到相互促进。
(二)以赛代练,集中集训
一方面,可以通过组织或者参加不同级别的集训或者暑期论坛等,提升实践指导教师素质和学生自身能力。另一方面,可以通过大量ACM/ICPC 题目的练习以及搭建ACM/ICPC 在线测试平台,促使学生发挥自主学习精神,自学所需算法和相关知识,弥补自身不足。
通过基础性教学重点的练习,每周对相关知识点进行周赛。周赛一般选择7-10道题以OJ的形式进行,通过周赛,选拔出实践能力强的学生进入ACM协会进行定期集中培训。同时利用暑期的黄金时间,对学生进行两个月的算法方面的专题讲座。周赛、月赛后的题目重点由学生讲解,对于难题由指导教师通过引导学生来集中讨论,集中讲解。对于未进入ACM协会集训的学生,可以参加每周的周赛,只要达到协会要求的做题数量和要求,随时可以成为协会中的一员。对于比赛中始终处于下游的学生,也可让其退出协会。通过“以赛代练”的机制,提高学生对知识的掌握能力。
(三)开展“传帮带”活动
学生在写算法的过程中遇到的很多问题都是基本语法和格式没有熟练掌握造成的,这些问题可以通过高年级或者编程能力强的学生的帮助来解决。当学生无法解决或者遇到共性问题时,由指导教师通过专题形式来讲解。
(四)算法到应用程序的过渡
对大一大二参加竞赛的学生来说,应以算法类竞赛为主。大三以后,在算法竞赛的基础上,让学有余力的学生学习面向对象程序的开发,将算法的思想加入到应用程序中,以开拓学生的编程能力,提升团队合作意识,提高学生的科研水平,为学习将来做毕业设计打下良好的基础。
(五)总结学科竞赛经验
参赛结束后,要及时进行总结,对比赛中的优点和不足进行分析,以此来提高自身的综合能力,为以后的学习和实践打好基础。算法竞赛类学科竞赛的题目常常涉及学科中的重要知识和核心技术,软件程序类常涉及创新性、队伍搭配的合理性和答辩环节等关键问题。教师通过认真指导,组织学生对不同的解决方法进行讨论,通过讨论、对比,优胜劣汰,以提高竞赛的效率,促进教学改革。
(六)教师自身能力的提高
选择了计算机,就选择了终生与时俱进,尤其是在程序设计方面,从面向过程到面向对象,从基于Windows/iOS平台,到目前基于Android / iPhone平台的程序开发,教师自身需要充电,以适应社会的需求,从而更好地将最新的技术应用到教学和指导学生参加学科竞赛中。
四、结束语
学科竞赛不仅促进了应用型人才的培养,同时也促进了高校为适应研究型教学所进行的教学改革。通过学科竞赛,可以促进学校的教学改革,为社会培养大量的创新型人才。另外,参加学科竞赛的选手,需要通过实践来进行选拔、训练和实战,这会大大增强学生的自主学习能力。通过宣传等活动,在校园营造良好的学习和竞争氛围,能达到以竞赛促进教学的目的。
[ 参 考 文 献 ]
[1] 朱月秀.基于ACM竞赛的C++程序设计课程教学改革[J].漳州师范学院学报(自然科学版),2012(1):96-99.
[2] 高和蓓.大学生程序设计竞赛研究与实践[J].计算机光盘软件与应用, 2011(24):222-223.
[3] 顾广耀,李翔昊,田原,等.漫谈软件作品竞赛有效开展的意义和方法[J].计算机教育,2008(6):44-45.
[4] 杨松涛,王斌,张海燕.从ACM/ICPC竞赛探讨大学生的能力培养[J].计算机教育,2010(24):16-18.
[5] 陈志,李梦泽,马嫣,等.基于ACM程序设计竞赛的常规教学改革[J].电气电子教学学报,2011(6):18-20.
[责任编辑:陈 明]