程序设计竞赛在软件工程专业中的应用

2017-02-16 20:03于波张淑丽李鹏
关键词:软件工程高校

于波+张淑丽+李鹏

摘 要:软件工程专业的主要职责是培养高质量的软件工程师,文章从当前高校软件工程专业课程现状出发,提出将程序设计竞赛引入软件工程的编程语言类与专业基础课教学的策略,并以哈尔滨理工大学软件学院为例,分析其实施成效。

关键词:程序设计竞赛;软件工程;高校

中图分类号:G642.3 文献标识码:A 文章编号:1002-4107(2017)02-0033-02

目前,我国信息产业处在飞速发展的阶段,市场对于软件的需求变化较快,各种软件产品更新较快。软件行业为了满足市场需求和软件产品开发需要,软件技术也在日新月异地更新换代。针对此情况,高校的软件工程专业对于人才的培养也一直要通过教学大纲、教学内容、教材选择等途径的调整,紧跟软件行业的步伐,培养出适应行业需要的高质量的软件人才。

一、软件工程课程现状

国内多数高校软件工程专业针对大一、大二学生开设的编程语言类课程(如:“C/C++语言程序设计”、“面向对象程序设计Java”等)、专业基础类课程(“数据结构与算法”、“离散数学”等),仍存在以下一些问题。(1)人才培养:侧重专业知识点的传授,保证了所讲授内容理论知识结构的科学完备,但是忽视了学生“学以致用”的能力培养,存在“学霸”不会编程的现象。(2)教学内容:主要侧重专业理论知识的讲解,学生只停留在专业知识的识记上,不会运用知识解决问题,学生只停留在敲书上的示例代码的阶段。(3)教材选择:选择的教材主要侧重编程语言语法的介绍,书中的案例很多是关于数值计算的,缺少实践应用价值案例程序。(4)缺少能力培养的平台:在整个教与学的过程中,缺少培养学生分析问题,解决问题的能力,以及创新能力的平台。(5)考核方式:知识的学习过程包括“了解—熟悉—记忆—理解—运用”,多数学生还停留在熟记阶段,所以考核方式也多侧重“死记硬背”,没有检验学生理解和运用的程度。(6)缺少素质培养:软件工程专业的特点就是不断更新,而多数学生只是被动掌握了书上的专业理论知识,缺乏主动学习的意识,不知道进一步拓展学习,没有深层次领悟背后的专业内行,导致缺少通过解决问题来驱动学习知识的专业素质。同时,在团队合作、资源共享、英语阅读以及搜索目标答案等素质方面也需要加强培养[1]。

二、程序设计竞赛平台的构建

为了丰富软件工程专业的学生专业知识学习的氛围,以及提高学生的分析问题、解决问题、编程能力、逻辑思维能力以及创新能力,为学生建立程序设计竞赛平台。该平台主要侧重算法研究与程序设计,为学生营造一个算法和程序设计学习与交流的平台,增强学生们对算法的认识,对程序设计竞赛的认识,重视学生的能力素质培养,为学生开发项目夯实专业基本功。

(一)科学的组织运作

由专业内部有程序设计经验的教师根据方向(如:C/C++语言、Java语言等)形成指导团队,引导学生在程序设计竞赛平台上发展和提升自我,为平台科学高效地运作制订计划,包括:选拔计划、培训计划、训练计划以及参赛计划。选拔学生成立算法研究与程序设计的协会,包括:会长、副会长、实验室管理组长(出勤、卫生、会费、资金等)、宣传组长(招新、海报制作等)、技术组长(组织竞赛)、讲座组长(算法培训)以及日志管理组长等。各负责人职责明确,正式会员常年参加训练,包括寒暑假,全体会员服从指导教师和会长安排,并形成自我管理的团结和睦的气氛。协会日常训练和管理工作组织有序,纪律严格,采取分级训练方式。

(二)软硬件环境及网络平台的建设

指导教师及协会成员建立程序设计基本的软硬件环境。为加入协会的学生建立网络交流平台,及时解答大家的问题,并共享电子资料(书籍、课件、视频等),以及进行各种竞赛信息的通知。同时,建立基于B/S(浏览器/服务器)结构的网络练习平台,主要针对各种问题进行分析解决,能够让学生实时提交程序设计代码,并能够实时反馈对错。

(三)主要工作的开展

1.进入平台的选拔工作。新生入学时,指导教师及协会负责人进行宣讲,主要介绍程序设计竞赛平台的具体学习方式,以及学生可以获得的收益。参加学生必须具备良好的品德,诚实守信,遵守纪律,热爱程序设计以及乐于助人,经本人申请,填写基本情况调查表。同时,能够完成基本编程题目数目的学生可以加入,并注册成为正式的协会会员。

2.新生指导。指导教师及协会负责人会组织老会员指导新生,给新生进行答疑辅导,形成良性的学习机制,引导新生更快地进入专业学习。

3.制订计划:指导教师和协会相关负责人会帮助每个队员制订训练计划。

4.算法培训:面向协会会员定期提供算法培训课

程,讲解相关程序设计竞赛中的题目,丰富学生的编程知识,培养更缜密的逻辑思维能力,提高学生的解题能力、临场竞赛能力,增强学生参加校级省级,或省级以上程序设计竞赛的实力。

5.训练:定期组织训练赛,检验学习成果,提高会员的程序设计的实战能力。

6.竞赛:组织参加国家级、省级、校级及院级的程序设计竞赛以及企业组织的竞赛。通过相关程序设计竞赛,丰富学习生活的同时,增加学生学习算法的热情,为学院程序设计提供良好的氛围。

7.考核:指導教师建立会员竞争机制,实行淘汰机制,提高协会会员参与各项活动的积极性。

三、程序设计竞赛在软件工程教学中的应用策略

(一)通过网络平台提高编程能力

根据讲授的内容,布置网络练习平台上的相关题目,让学生练习。学生通过完整的对问题的分析、解决方法的设计以及编码、测试,真正体会软件工程的过程,并将学到的知识点应用到具体题目的解决上,达到“学以致用”的目的,也提高其分析分析、解决问题的能力以及创新思维、逻辑思维能力。如:教师讲授C语言程序设计这门课程,可以根据所讲授的知识点,将练习题目归类布置,包括:入门题、输入/输出、基本运算、条件及循环、数组、字符串、结构体等。

(二)上机考核

组织学生通过网络练习平台进行上机考核,可以有效检验学生的程序设计能力和知识运用能力,提高考核的效率和有效性。同时,为了保证考核的公平性,邻近考生所做试题是不同套,但难度一样。

(三)算法培训

主要针对编程语言类课程(如:“C/C++语言程序设计”、“面向对象程序设计Java”等),这些课程侧重语法的讲解,算法培训可以让学生掌握解决问题的方法,提高其逻辑思维能力。

(四)练习赛与相关竞赛

通过协会组织的练习赛,鼓励授课对象积极参加。为了进一步提升学生的程序设计能力及创新能力,鼓励学生参加学院、学校级程序设计竞赛,行业协会组织的赛事,如:美国计算机协会组织的ACM-ICPC大学生程序设计竞赛(省级、东北赛以及亚洲杯)、工业和信息化部人才交流中心组织的蓝桥杯全国软件和信息技术人才大赛以及中国计算机学会(CCF)组织的CCF计算机软件能力认证(CSP)等;企业组织的赛事,如:Oralce公司组织的“甲骨文杯”全国 Java 程序设计大赛,百度公司组织的“百度之星”程序设计大赛,以及谷歌公司组织的“Google编程挑战赛”等。通过“以赛促学”的实战平台,切实提高学生的编码能力,一方面让相关课程的教学效果落到实处,另一方面通过竞赛获奖增加学生的就业砝码。

四、教学效果分析

哈尔滨理工大学软件学院在过去的5年里,坚持让学生“做中学”和“以赛促学”,在相关程序设计竞赛中获得国家级奖项25项,省级奖项144项,通过程序设计竞赛平台有效地激发学生编程的动力,明确了学习的目

标,让学生能够主动参与到学习过程中,课堂上教师有更多的时间讲解对应知识点的应用以及程序设计竞赛中出现的题目,实现了课堂翻转,学生程序设计能力得到极大提高。并且,获奖学生积极带动周围学生编程,形成了“以点带面”的良好的专业学风。

通过程序设计竞赛平台显著提高学生成绩,图1中,平滑折线代表给2011级学生采用传统教学模式学生的“数据结构与算法”课程的成绩(67人,平均值=53.4),点划线代表给2012级学生引入程序设计竞赛平台后数据结构课程的成绩(65人,平均值=66.6)。可以明显看出在教学中引入程序设计竞赛平台后,学生整体成绩有大幅度的提高。

图1 引入程序设计竞赛平台前后学生“数据结构与算法”课程成绩的对比

另外,通过鼓励2013级、2014級学生通过学院、学校的在线程序设计评判系统做题,以及按照程序设计竞赛的方式进行上机训练、考核,学生在大一阶段的C/C++语言程序设计的成绩得到了显著提高,并且学生的练习时间、完成题目的数量与最终的成绩是成正比的。

本文提出程序设计竞赛平台引入软件工程专业的教学环节,尤其是编程类课程、专业基础类课程中,并详细阐述了怎样建立程序设计竞赛平台,以及将其应用到软件工程专业的教学中的具体实施措施。通过实例分析,证明了在软件工程专业引入程序设计竞赛平台的确可以激发学生专业课程学习的动力,提高学生的程序设计能力、综合的软件工程素质,使学生形成了扎实的专业“内功”,以不变应对万变。该方法还可以推广到相关学习编程类课程的专业中,让学生拥有实践动手的平台。

参考文献:

[1]于波,郭红,李鹏.CDIO工程教育模式在数据结构与算 法教学中的应用[J].黑龙江教育:高教研究与评估, 2014,(12).

猜你喜欢
软件工程高校
应用瀑布模型的MOOC制作方法
融合APTECH体系的软件产业人才培养探究
关于如何创新和完善计算机软件工程管理的探讨
提升高校官方微信公众平台传播效果的几点思考
中日高校本科生导师制的比较
试论高校党建工作中的党史教育