“宁拙毋巧”——程序设计类人才创新能力培养改革与实践

发布者:荆栋发布时间:2018-11-02

    一背景介绍

     随着社会的不断发展,信息技术几乎涵盖了社会的方方面面,社会对计算机类专业的人才需求日益增加。据统计,截至2016 年,我国的计算机类专业布点数已经达到2956个,在校生数占整个工科在校生数的百分之十六七。然而,对于计算机类专业人才培养理念和教育教学方法上还存在诸多问题,尤其是面向应用型人才培养的地方高校中更为明显。这些问题主要体现在专业培养理念上重理论、轻实践,重知识、轻能力,重书本、轻创新;在授课方式上以教师为中心,通过课堂讲授知识的方式对学生进行单向知识传授;在对学生的评价方法上,通过使用纸质试卷进行期末考试的方式衡量学生的学习状况;在教学方法上采用板书加电子教案的形式。这些问题直接导致的结果是,培养出的学生无法摆脱眼高手低、好高骛远的特征,缺乏良好实践能力、创新能力等专业基本素质,缺乏专业竞争力难以满足社会需求。

为了提升计算机类专业人才培养质量,迫切需要改变传统教学理念,从传统的以教为中心转变为以学生能力发展为中心。应用型人才的核心能力是工程实践能力,工程实践能力是一种综合能力[3-4]。培养计算机类学生工程实践能力的基础和核心在于学生的编程能力、计算思维、算法能力、创新能力等基本程序设计能力的培养。程序设计能力培养主要是在学生大一和大二阶段,本文以计算机类专业人才的程序设计综合能力培养为目标,改变传统重理论、轻实践,重知识、轻能力,重书本、轻创新的培养理念,建设了包括程序设计基础、离散数学、数据结构与算法一体的程序设计能力课程体系和教学方法,突出对编程能力、计算思维和基本算法实现能力的培养。在此基础上通过组织学生参与各类大学生程序设计竞赛激发优秀学生算法能力和创新能力的进一步提升,实现竞教相长的良性循环。通过自主开发的模拟程序设计竞赛的在线测评系统为课程实践考试和竞赛训练提供支撑平台(http://acm.sdut.edu.cn/onlinejudge2/)。

    二程序设计能力培养课程综合改革

为了更好地提高学生的程序设计能力,在授课理念上改变了以往对课程局限于课程本身的狭隘的认识,把程序设计类课程放在专业体系中来认知,打通程序设计基础、离散数学、数据结构与算法、编译原理等课程之间的联系,在教学设计中形成一个整体,充分发挥其专业入门课程应该起到的引导作用。通过程序设计基础培养学生基本的编程实践能力,在离散数学课程中通过数学问题的编程实践加深基本理论和算法的理解,在数据结构与算法课程中强化算法的实现能力,促进对算法和基本理论的掌握,通过编译原理实践对算法和理论进行综合运用并加深对程序执行过程的理解。通过程序设计类课程体系的设计充分培养学生的实践动手能力,让学生掌握知识在实际问题中的应用和方法。实现对学生程序设计基本能力的有效培养,又可以促进学生良好的专业学习习惯、专业思维习惯以及专业实践动手习惯的初步养成。

学生入校以后从程序设计基础课程开始,始终强化程序设计能力。通过在不同课程中持续的强化编程能力,使学生在大学前两年形成良好的编程习惯。此外,这种实践能够使学生在编程中理解理论,逐渐促进计算思维的形成并形成良好的算法设计和实现能力。通过在离散数学中引入实践,一方面能够使学生提高编程能力,更重要的是可以使理解数学理论与计算机求解问题之间的关系,降低学习数据结构课程的困难,更容易理解数据、算法和程序之间的联系。

1 以学生为中心的授课方式改革

课堂授课过程中摒弃了专业课以知识讲解为主的教学方法,程序设计基础课程实现了理论实践一体化的教学模式,所有内容全部在机房授课,学生边学边练,让教师成为教学过程的组织者与协调者,让学生成为教学过程的参与者与核心。离散数学、数据结构与算法、编译原理课程加重了实践教学的比重,注重理论与实践的结合。通过讲练结合的教学模式,加强了教学过程中教师与学生的实时互动、学生与学生的实时互动,通过以程序竞赛形式的上机练习,增强了学生学习过程中的竞技性、趣味性,提高了学生参与学习的积极性与主动性。

程序设计能力培养课程体系中的课程实践环节完全依托于我们自主开发的山东省高校第一个程序在线评测系统(SDUTOJ)。通过灵活的使用该系统,将程序设计类课程的实验教学、实践练习和考核结合在一起,学生可以随时随地登录系统提交实验代码,有效调动了学生的实践积极性,解决了课程原有实践教学方法单一、受制于教学场地、实践教学方法落后等原因造成的对学生实践能力培养不足的问题。(所有课程实验可访问我们的在线测评系统,在线注册用户以后点击Experiments查看,网址:http://acm.sdut.edu.cn/onlinejudge2/index.php/Home

2 学生评价方式改革

在学生考核与评价的过程中,借助大学生程序设计竞赛机制与SDUTOJ平台,对程序设计基础、离散数学、数据结构与算法和编译原理的课程的考核方式进行了彻底的改革,突出对能力的考核和评价。程序设计基础课程自2014年开始取消了理论考试,只保留了平时实验与期末机考两个环节,建立了与课程目标一致的实践能力考核框架。所有课程采用“抽测+补测”的机考模式,通过阶段性的实验抽测,充分保障了平时实验考核结果的公平性、有效性,解决了原来对学生平时实践能力无法准确考核评价的问题;通过后期定时对抽测不过关学生的补测,调动了学习基础相对较弱的部分学生平时认真及时做题的积极性,真正发挥了平时“抽测+补测”这种新型考核模式对学生平时学习的驱动作用。离散数学、数据结构与算法和编译原理根据课程性质,依托于在线测评系统实现课程的日常实验和编程练习,借鉴程序设计竞赛模式完成课程期末机考,考试成绩由理论笔试成绩、平时上机测验成绩和期末上机考试成绩构成,实现了理论考试与机考相结合的评价机制。

竞教相长的创新能力培养模式

程序设计类课程改革保证了计算机类专业学生有较高的实践能力,为了不断激发学生的学习兴趣和动力,为优秀学生提供良好的发挥空间,促进创新能力的进一步提升,我们组织学生参加各类大学生程序设计竞赛,实现了程序设计类课程教学与ACM大学生程序设计竞赛的有机结合,形成了以教学带动竞赛以竞赛促进教学的良性循环。我们将科技竞赛视为学生创新能力培养的一个重要环节,本着人才培养的理念参加科技竞赛,认为大学生创新活动源于教学、源于专业又能够促进教学、融入专业能力的培养过程。注重学生良好的自我约束能力和诚信比赛的品质培养,注重团队意识与协作能力的训练。

为了更好的组织管理学生参加竞赛,促进学生更快成长,构建了科学完整的ACM创新培养体系,制订了从第一学期到第五学期详细的训练计划。该训练计划包含了每个周末与寒暑假的训练安排,包含了大一、大二、大三各个年级学生的不同训练内容,也包含了专业与非专业学生的不同训练计划。该训练培养体系涵盖了ACM国际大学生程序设计竞赛所需要的全部内容,知识点的分布按照不同培训阶段由易到难,训练题目借鉴了国际国内最高质量的题目标准,保障了只要学生能够按照体系要求认真努力的训练,就一定可以显著的提升个人能力。

此外,建设了合理的ACM梯队对学生进行分类指导和训练,目前集训梯队主要包含以下几个:梯队一:程序设计基础一(主要面向所有有意愿加入的大一学生)、梯队二:程序设计基础二(主要面向从梯队一选拔的、参与大一寒假集训的大一学生)、梯队三:数据结构(主要面向经梯队二选拔的、参与大一第二学期集训的学生);梯队四:算法初级(主要面向经梯队三选拔的、参与大一暑期集训的队员);梯队五:算法中级(主要面向经梯队四选拔的、参与大二第一学期集训的主力队员);梯队六:算法高级(主要面向经梯队五选拔的、参与大二寒假及以后集训的主力队员)。最后,还成立了“智能数据工程与分析学实验室”和“运维技术中心”两个实验室,对退役后有志于学术研究与技术训练的学生开放,跟着指导老师做研究或者项目开发。

    四程序在线测评系统

程序设计能力培养体系建设的重要支撑平台是我们设计的程序在线测评系统,其支撑了课程体系建设的实践教学改革和实施,支撑了大学生程序设计竞赛的训练和组织。该系统自上线以来,不断对系统进行维护与升级,不断的补充练习题目,目前该系统包含了适合各个水平学生的不同难度的4000多道在线编程测试题目,题目包含程序设计基础、数据结构与算法、编译原理和离散数学等课程的编程练习题,也包括部分各类大学生程序设计竞赛的真题,在练习和作业时为各个层次的学生提供了选择的余地。目前该系统已经成为目前省内高校中注册用户最多、题目数量最大的程序在线测评系统,通过该在线测评系统使得学生可以在有网络的地方登陆平台练习并在线测评所提交代码是否正确。作为一种创新的实践教学平台,允许学生根据自身水平和兴趣,选择适合的编程训练方式、数量和难度,提高实践教学的学习效率,极大地激发了学生的编程兴趣,激励了学生的个性化自主实践训练。同时教师可以查看学生提交的代码,有效的监督学生并及时发现学生编程中的问题并予以指导,使课程的实践效果得到了明显的加强和提高。

    五总结

程序设计能力培养课程体系建设与改革从2014年秋季程序设计基础 (C语言)课程开始,到目前为止历经四年,从开始的计算机科学与技术专业学生开始逐渐扩展到软件工程和通信工程专业的学生。以程序设计基础综合课程改革的方式和经验为借鉴,进而将计算机科学与技术和软件工程专业的课程改革逐渐扩展到数据结构与算法、离散数学和编译原理等课程,并且在逐渐地纳入面向对象程序设计、操作系统等课程形成更为完善的课题体系结构,保证计算机类专业学生从大一到大三有不间断的上机实践机会。

为了进一步提高优秀学生的创新能力,完善了的大学生程序设计竞赛训练和管理机制,经过几年的实践检验达到了良好的效果。截止到2018620日,山东理工大学计算机类专业学生在各类大学生程序设计竞赛中获得国家级铜奖以上奖励51项,其中201611月举行的第 奖;此外,还在山东省大学生程序设计竞赛中获得三等奖以上奖励40项。值得注意的是在能够反映各个高校计算机专业教学水平的中国大学生计算机竞赛团体程序设计天梯赛中,我校在2016年和2017年分别以全国第六名和全国第七名(珠峰争鼎组)的成绩获得高校一等奖,在2018年获全国(珠峰争鼎组)第14名,高校三等奖。20167月,我校受邀在中国大学生程序设计竞赛暑期研讨会上做了“竞教相长”的经验交流报告。

综上所述,山东理工大学计算机程序设计能力培养体系的建设与实践对提高学生的实践能力和创新能力具有良好的促进作用,相关的做法和经验可以为面向应用型人才培养的地方高校计算机类专业的人才培养提供些许可借鉴的方法和经验。


Copyright © 2018 山东理工大学. All right reserved. |