张晓孪, 王西锋(宝鸡文理学院 计算机学院,宝鸡 721016)
应用型本科计算机专业程序设计能力培养模式的探究
张晓孪, 王西锋
(宝鸡文理学院 计算机学院,宝鸡 721016)
程序设计能力对计算机专业的学生来说不仅是职业技能的培养,也体现着创造性思维的信息素质培养过程。分析了现行的培养模式的弊端,探索培养应用型本科计算机专业大学生程序设计能力的可行方法,提出了以学生为主体,夯实基础,改革教学与实验,突出实践及能力培养和强化实训的有效措施。通过效果反馈该模式较好的培养了学生的编程实践与创新能力,为学生走向工作岗位奠定了良好的基础。
程序设计能力; 应用型本科; 实践; 培养模式
2014年教育部明确提出要引导一批本科高校逐渐向应用技术类型高校转型,要加强应用型人才培养。计算机专业因为自身工程实践性强和发展迅速的特点对应用型人才提出了更高的要求。众所周知,应用型本科人才培养的3个要素分别是知识、能力和素质,如何认识和摆正三者的关系呢?显然能力要素是其中的核心要素,是计算机应用型人才的突出特征。因为无论是知识要素还是素质要素,最终都要通过能力要素来体现。能力是在掌握一定知识的基础上培养训练而成的,属于一个人的内在的品质因素。其中,计算机专业的程序设计能力的培养与训练是众多能力培养中最基础也是最重要的。程序设计是表达抽象思维的一种方法,在程序设计过程中贯穿阅读判断、分析思考、工具利用、抽象表达、综合创造等多项技能,对计算机专业人才素质的培养至关重要[1]。程序设计在计算机学科知识体系中处于核心地位,对计算机专业的学生来说不仅是职业技能的培养,也体现着创造性思维的信息素质培养过程。计算机行业需要适用性强的应用型才人,但本科院校培养的学生与行业的需求存在一定的差距,因此应用型人才的培养定位和目标有待明确,培养模式有待改进与完善,迫切需要对计算机专业的人才培养体系进行改革,逐步建立计算机应用型人才培养教学体系。笔者以宝鸡文理学院计算机专业为例,探索培养大学生程序设计能力的可行方法,提出了以学生为主体,夯实基础,改革教学与实验,突出实践及能力培养和强化实训的有效措施,培养学生的实践与创新能力,为学生走向工作岗位奠定良好的基础。
程序设计是一个综合的实践过程,是指设计程序、编制程序、调试程序的方法。应用型创新人才的培养目标是以提高学生能力和素质为核心,坚持“理论、能力、技能、素质”培养主线,坚持以编程能力的培养为中心,着力强化实践教学和锻炼与培养学生的实践动手能力、工程设计能力、创新应用能力和团队合作沟通能力,使学生的学习能力、知识运用能力和创新能力得到有计划、有层次、分阶段的培养和提高,成为理论基础扎实、应用实践能力强、有特长且具备创新意识和能力、能为地方经济和社会发展服务的应用型人才[2]。具体来说就是要求计算机专业的大学生在校内学习期间熟练掌握数据结构与算法、程序设计语言、软件设计方法和操作系统等核心课程的基本理论知识与基本技能,具有较强的程序设计能力,毕业后能够从事软件的开发与研制。
国内现行的程序设计能力培养方法主要是学生围绕编程理论学习,通过一定的实验进行巩固。而传统的计算机类本科教育单纯重视理论知识的系统性和完整性,却忽视了对大学生的理论联系实际能力的培养,结果是学校对学生的创新能力培养不足,学生实际编程能力较弱。分析其中的原因有以下几个方面:(1)很多学生学习兴趣和积极性不高,自觉主动地学习意识很弱,解决学习中遇到的困难的信心和行动不足;(2)教师教学方法单一、缺少课堂内容的精心设计,教授的内容重理论轻实践,容易使学生陷入很多语法的细节,学生很难真正理解所学课程的意义及用途;(3)课程的课时有限,教师很难讲一门课的内容讲深讲透;(4)实验课内容陈旧,主要以验证为主,缺乏设计与创新,内容设置不合理,实验效果不尽如人意;(5)计算机专业的人才培养方案不是很科学,课程设置与衔接与市场需要有较大的差距,更新速度缓慢;(6)程序设计类的课程考核方式单一,不科学。
基于以上的现状与缺陷,我们必须对现有的情况进行改革。改革的出发点是基于正确的教育思想和教育理念。我们要明白大学教育进行的一种专业或职业教育,培养的对象是人,而不是考试机器;不断的激发学生的学习热情比单纯教授知识本身更重要;学习知识和接受教育的最终目的是培养学生深层理解、举一反三的能力,而不是机械地训练;老师不应该是居高临下,而是像朋友一样帮助学生成长成材。
众所周知,软件设计与开发过程中强调“以用户为中心”,借用这一观点到教学中,教学设计应该以学生用户为中心,做到以学生的学习兴趣为导向,以其能力培养为中心[3]。培养模式的改革首先要做的也是最重要的是转变师生教与学的态度。很多学生学习程序设计类课程时课前不预习,课堂中听的一知半解,课后不复习,从来不会主动去练习,这样的学习状态导致的学习结果可想而知。只有激发学生的学习热情与动力,我们的改革才会有意义。试想一下,如果学生都不爱学习,也没有积极性,即使教师讲得再好热情再高,也不会有什么好的效果。俗话说,“兴趣”是最好的老师,思想决定行动,所以培养模式改革的出发点就应该从态度上开始。学习兴趣贵在任课教师的激发和培养,在学习过程中不仅要提高程序设计所要解决问题的自身吸引力,更要让学生体会到编程的快乐与成就感,由此可以增强学生解决学习中碰到的困难与挫折的信心与勇气。需要注意的是,随着知识难度的加深,学生的学习积极性可能会下降,甚至对那些较为枯燥的程序设计产生抵触和畏难情绪,教师要注意运用各种策略比如启发式教学使学生保持初学阶段的兴趣和积极情绪。
其次,我们老师应该改变过去填鸭式、满堂灌的教学模式,在课堂上教师应该采取有吸引力的内容设计吸引学生积极思考,踊跃讨论,对现有的课程教学模式进行改革与创新,提高学习效率,改善教学效果。俗话说“授人以鱼,不如授之以渔”,摆正自己的位置,教师应该激发学生的学习兴趣和自主学习能力,让学生课后主动查漏补缺,提高学生的创造力。
再者,大部分学习程序设计课程的学生在进入大学以前从来没有接触过编程方面的学习和训练,因此不太了解程序设计课程的学习特点,不知道如何学怎么学,可能很多人还是采用中学时代的学习方法,很容易走弯路。很多学生主要将学习的注意力放在了编程语言的语法细节上,以为每一个语法现象、知识点都非常重要必须要学会,而在实际的编程过程中,这种语法细节没有太大意义。国外一些研究表明,在学习程序设计时最重要的技能是问题分析和求解,这是一种思维层面的、抽象的技能,也恰恰是学生所欠缺的,而且这种技能不像具体的语法知识只要简单地传授即可,它需要不断的培养和训练[4]。
最后改革要以提高实践为目标,不断对人才培养方案、课程体系和考核方式进行调整,与时俱进,采用多种校内实践方式不断提高学生实践能力。
3.1 以学生为主体
以学生为主体就是转换学生的角色,教师应该关心每一个学生,给学生一些学习的压力,让学生们由被动学习变成主动去学,让学生们由要我学转变为我想学,在课堂内外发生真正的自我学习与提高。笔者在近几年的C和C++教学经历中,从以下5个方面进行了一些尝试。(1) 每节课的最后把下次要讲的内容告诉学生,要求他们课前必须预习,下次上课先对上次讲授的重点内容进行提问,再对预习的内容进行检查,将提问和检查的情况纳入总评成绩内。如果大家的预习效果比较好,教师就可以少讲或者不讲这些内容,这样可以加快学习进度。(2) 每次实验课的前一天可以将实验作业提前发给学生,让他们提前准备,去机房时教师应该检查完成情况,不按要求做的学生拒绝进入实验室。下次理论课可以抽出10-15分钟的时间,让部分做的好学生上讲台给大家去讲解实验课中的一些题目,主要是和大家分享编程的思路和改正共同的错误,这样的效果比教师去讲要好得多。(3) 实验课中每次抽出几名学生单独提问,对学过的知识进行检查,这样面对面的交流能够真实反映学生的学习状况,督促学生课后更好的复习与巩固。对于一些基础较差并且不好好学的学生提出警告,并在今后的教学中予以关注和督促。(4) 每次理论课后布置一些有针对性的书面或思考作业,要求不能互相抄袭,让学生独立练习,将学生的完成情况及时反馈到教学中。(5) 为了培养学生解决实际问题的能力,在每学期开学初根据课程内容和特点,将每班学生分为4人一个小组,布置一些实际的信息管理系统或小游戏的设计开发任务,要求期末每组独立完成软件的设计与编码,撰写一份设计报告。
3.2 夯实基础
在本科教育中,课程起着关键作用。在大学里,程序设计能力的培养是从课程学习开始的,学生通过一门高级语言的词法、语法、使用方法的学习,要求掌握、体会使用计算机解决问题的基本技能。教师在传授知识的同时,更要注重思想、方法的传授。教会学生怎么样去发现问题,提炼问题,抽象问题,然后去解决问题。
我校计算机科学与技术和软件工程专业在最近两年内的程序设计类课程的开课计划,如表1所示。
表1 程序设计类课程计划
第1,2学年以夯实学业基础、培养职业素养为目标,重点放在信息素养及程序设计基本功的培养训练上,通过课程的学习,让学生对整个四年的人才培养方案、课程设置有一个整体的了解。通过专业的学业规划、课程设计及实习,让学生们对自己的专业、学业方向有一个思考,对自己将来的就业方向有一个预期。第 3,4学年重点进行软件开发能力的培养和训练,进一步提高学生的专业素养和动手能力。
3.3 改革教学与实验
现行的专业课理论教学与实验课时非常有限,以“C语言程序设计”课程为例,宝鸡文理学院的计算机3个专业的理论和实验课时都为每周2小节,计划都在大学一年级第二学期开设,授课周数为16周。在实际教学中,教师只能围绕运算符和表达式、程序流程控制、数组、函数、指针这些内容去讲解,后面的结构体共用体、动态内存分配、编译预处理、文件和C中图形程序设计等的内容只能匆匆带过或者基本不讲。这样会使学生的知识体系不完整,知识点理解不全面。其他课程也有类似的问题,所以我们老师和学生想在有限的课时内打好基础就要发挥学生的主观能动性,把每门课程中已经会的或者自学能看懂的让学生自己去完成,课堂中集中精力解决较难的容易混淆的内容,这样不仅可以锻炼学生的自学能力,还可以加快学习的速度和提高课堂学习效率。
因此课堂教学需要改变传统模式,增加师生互动,教师可以充分利用多媒体、黑板、视频、动画、课件等现代化的手段,不断提高课堂教学效果,实现抽象的理论形象化、复杂的算法动画化、数据的处理可视化,并在教学过程中将不同的知识点通过案例教学法、启发式教学法、互动式教学法、实例法等多种教学方法来展现,从而激发学生的学习兴趣,提高教学质量[5]。一门课程中的有些章节的内容教师可以考虑采用翻转课堂的形式进行,让学生带着问题进课堂,可使老师能够针对性地对学生进行讲解,让学生展开充分的互动交流,进行自主思考。老师在其中起到的是一种助教、助导的作用而不是像一般的课堂上所处的一个以老师为中心的地位。课堂上会将更多的时间和精力留给学生,体现学生课堂上的主体地位。
例如在教师讲解“C++面向对象程序设计”的基本原理的过程中,要结合学生实际编程水平和软件环境,从阅读程序、分析程序、调试程序错误到完善程序,逐步提高学生动手编写程序解决实际问题,让学生体验到程序设计的乐趣和成功的喜悦,增强学习兴趣和信心。
首先对课程中所学的每一个知识点,首先教师应该让学生真正理解学习它的目的是什么,有什么作用,然后才是理解并应用。笔者以所带课程C++为例,由于C++中新概念多,很多学生对C++里面学习复制构造函数时的作用不明白,教师可以在课堂上通过一个浅复制实例让学生去分析程序为什么运行时会有异常,从而引出复制构造函数这个概念。其次就是对于遇到的问题,要让学生自己去分析,怎样用所学的知识去解决,有哪些好的方法,选择一个最优的方法去实现。因为问题的求解方法不是唯一的,教师应该鼓励学生多问为什么,教会学生不要墨守成规,多寻找更合理的答案。比如在C++中讲解普通构造函数与析构函数的调用次序时,可以通过下面一个具体的输出唐诗的实例来演示,这样效果更好。课堂教学中教师再通过VC++的设置断点单步跟踪等功能的演示加深理解。
例:完善下面给出的程序,但不允许对main( )函数作任何修改,使程序能够在屏幕上输出唐诗:
床前明月光,疑是地上霜。
举头望明月,低头思故乡。
原来的程序为:
#includelt;iostream.hgt;
void main( )
{ coutlt;lt;“举头望明月”; }
实验课与理论课相辅相成互为补充,它是使学生深入理解课堂授课内容的直接和有效手段。因此近年来,我院在新的人才培养方案中将很多跟程序设计相关课程的实验单独作为一门实验课。要保证实验课的效果,首先教师需要对实验课内容进行精心设计,设计的目的是为了能让学生能够理论联系实际,在实践编程中更好的理解理论知识,教师应该分级、分层的设计实验内容,由浅入深,循序渐进,从简单基础到复杂综合,最后过渡到设计与创新,不断丰富实验题目的类型,改变过去单一的以验证为主的实验类型,使学生在在理解中记忆,记忆中应用,在应用中创新[6]。因此需要完成验证性、设计性和综合性几个层次的实验,实验类的题目最好来自于我们的生活和实际,能够解决实际问题,这样的学习才更有效果更实用。其次,实验内容涉及的知识点要注意之间的关联性、类似知识点的渗透、对比与强化。例如在C++中的string类的实验题目中,应该融入已经学过的字符数组和指向字符串的指针变量的实现方法与strring方法的对比,让学生熟练掌握并应用在C++中处理字符串的3种方法。
3.4 突出实践与能力培养
对程序设计能力的提高来讲,编写一个程序并不难,编写一个好程序则不易。质的提高和飞跃来自量的积累和艰苦的训练,所以良好的专业技能和创造性思维培养的关键在于实践。能力培养是关键,无论是兴趣还是体会,都以能力的提升为基础和结果。例如对于面向对象的程序设计课程的教学而言,以能力为指向的改革目标包括:巩固提高学生编程基础能力,特别是调试程序与组织文件能力;提高学生运用面向对象思想的程序设计能力,尤其是抽象建模与复用设计能力;提升学生的表达、合作、自学等综合能力。学生储备知识的同时,还要具有进一步拓展和延伸专业知识的能力,学会学习并及时吸收,跟上知识更新与变化。计算机应用型人才必须掌握学习的方法,不断更新自己的知识和技能,具备自主获取知识的能力和终身学习能力。
实践可以在校内和校外同时进行,校内的实践在课堂内外有多种形式,从课程设计开始,以竞赛和科研项目为载体,通过各类的程序设计竞赛、学生的科技立项、资格认证、各类计算机证书考取等途径逐步提升学生的自主学习能力及创新能力;校外的实践可以利用每学年的寒暑假,组织性学生到软件公司去实习或实训,体验真正的项目开发环境和流程,培养项目团队分工合作能力和职业素养、提高学习能力、不断提升计算机应用的水平。
通过笔者对我校计算机专业的近几年教学实践与探索,发现采用了本文提出的改革模式进行C、C++、Java等课程教学和实验,明显提高了学生的兴趣和学习积极性,学生在学习过程中都能积极踊跃地参与,学习的氛围特别好,理论课占座率和到课率很高,实验课内基本消除了打游戏聊天等现象,85%以上的学生反映自己的实践操作能力有较大的提高;同时学生对程序设计语言的学习热情不断的被激发,积极主动参申报和参与和编程相关的科研项目和学科竞赛,成功申请和结题多项省级和校级大学生科技创新项目。同时,毕业生就业率连续三年在学校所有专业中名列前茅。计算机专业近几年的毕业生的专业实践与应用能力和就业创业能力明显增强,学生在其就业岗位上为学校赢得了良好的口碑与荣誉,很多用人单位反馈我校计算机专业所培养的学生表现出了良好的个人素质,专业基本功较扎实,实践和学习能力较强。
随着科技与信息技术的快速发展,社会对应用型人才的要求越来越高,这也对高校人才培养提出了更大的挑战。计算机专业经过几十年的发展,已经从最初的知识传授转变为能力的培养及素质的提高。今后计算机专业的发展需要走内涵发展的道路,要更多地考虑未来。学生程序设计能力的不足或缺失是很多计算机专业大学生所面临的突出问题,怎么解决这个问题是我们所有计算机教育工作者必须思考和解决的。只有改革现有的培养模式才能提高我国高等教育质量,这样培养出来的人才才能契合应用型人才的培养目标和定位,更好地为经济社会服务。
[1] 耿国华. 程序设计能力培养模式的探索与实践[J]. 中国大学教学, 2009,(3): 30-32.
[2] 刘鹏辉. IT应用型人才培养模式探索[J]. 计算机教育, 2013 ,(16): 23-27.
[3] 姜峰, 汤伟, 赖俊. 基于能力培养的面向对象程序设计课程教学改革探索[J]. 计算机工程与科学, 2014, 36(AI): 126-130.
[4] 谌卫军. 基于能力培养的程序设计课程教学[J]. 计算机教育, 2014,(7): 109-113.
[5] 陈志泊, 张海燕, 王春玲, 赵方, 王建新. 以程序设计与软件开发能力为主的计算机专业应用型人才培养模式的研究与实践[J]. 计算机教育, 2015,(7): 94-97.
[6] 张晓孪. 基于实践的C++程序设计实验教学模式探索[J]. 微型电脑应用, 2016, 32(8): 46-49.
ResearchonProgrammingAbilityTrainingModeofAppliedUndergraduateComputerProfessional
Zhang Xiaoluan, Wang Xifeng
(College of Computer, Baoji University of Arts amp; Science, Baoji 721016)
Programming ability is important for the cultivation of professional skills of students of computer major, and also the information quality training process of creative thinking. This paper analyzed the drawbacks of the current training model, training ability of applied undergraduate feasible method of college students majoring in computer program design, put forward the effective measures, such as building a solid foundation, reforming teaching and experiment, and strengthening the training for cultivating outstanding practice and ability. Through the feedback, this mode has cultivated programming practice and the innovation ability of students well and laid a better solid foundation for the students to work.
Programming ability; Applied undergraduate; Practice; Training mode
宝鸡文理学院第十一批校级教改项目(JGZD15016)
张晓孪(1978-), 女, 陕西宝鸡人, 副教授, 硕士, 研究方向:计算机应用。
王西锋(1978-), 男, 陕西渭南人, 副教授, 硕士, 研究方向:计算机教育。
1007-757X(2017)11-0032-04
G640
A
2016.11.20)