C++程序设计课程的教学探讨
2009-07-16马春华赵卫绩刘井莲孙晓霞
马春华 赵卫绩 刘井莲 孙晓霞
[摘要]紧扣C++程序设计课程的特点,以市场需求为导向,探讨C++课程的教学准备及教学实践,通过开展基于项目的学习,在教学过程中培养学生的编程能力。
[关键词]C++ 教学实践 教学准备
中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0420127-01
随着高等教育的快速发展,每年的计算机专业毕业生成倍的增长。就业压力逐年递增,怎样提高学生的竞争能力成为我们思考的问题。随着软件开发技术的发展,越来越多的企业都选择使用C++ 及其相关技术来构建应用系统。目前,无论国外还是国内,C++技术人才短缺,薪金待遇极为丰厚。程序设计是计算机专业的一项基本技能[1],我们国内许多高等院校都开设了C++课程,但是学生的程序设计能力并不乐观。很多毕业生对于毕业设计的开发尚有困难,更何况胜任一份程序员的工作。学生之所以不会写程序,除了与学生自身努力程度有关之外,更主要的是我们在程序设计教学中存在着一定的问题。传统的单向灌输式教学模式已不能适应教学的需要。因此针对C++程序设计的特点,应以市场需求为导向,坚持课程特点与学生特点相结合,加强实践教学,提高程序设计的能力。在教学中我们应注重激发学生学习兴趣,提高学生在真实情景中解决问题的能力与创新能力,提升学生的综合能力。我们需要研究、探讨新的教学模式、教学方法。
一、C++教学准备
根据C++ 程序设计课程特点及学生特点,把握好重点、难点和课时分配,制定符合实际的教学内容、教学大纲、实验大纲以及达到的预期目标;选择符合学生特点的实验指导书,即具体的实验内容;采用有效的教学方法和教学手段;制定科学的考核方式和考核标准,都是影响教学效果的主要因素。
(一)培养理念。半年需要近万元学费的培训公司之所以能生存下来,主要因为培训公司教给了学员软件开发技能。因此我们非常有必要虚心吸收企业的培训理念和培训方案,我们也要从学生入学的那天起,就要为学生走出学校大门,顺利跨入IT职场的那一刻做准备,倡导“理论够用,实战为重”和“以出为主,注重实效”的培养理念。
(二)教学原则。针对目前程序开发人员需求量大的情况,高校决不能扮演编程速成班的角色,好的程序开发人员是要有一个完整的学习周期,循序渐进、由浅入深。因此,我们应踏踏实实地按照一个原则来组织教学,那就是精讲多练,精讲是指老师精讲C++中的实用技术和典型实例。多练,是指学生要多练习编程,只有自己动手编程越多,程序才能编的越好。
(三)教学内容。把握好教学内容,是培养学生编程能力的基础。C是C++的基础,面向对象程序设计的三大特点:封装、继承、多态是C++课程的主要内容;也要涉及到标准模板库STL、微软基础类库MFC。尤其是STL,自1998年,ANSI/ISO C++标准正式定案,标准模板库STL(standard template library)成为了C++标准函数库的一个重要组成部分[2],在软件项目开发中有着很广泛的应用。制定符合市场需求的教学大纲与教学内容,是摆在我
们面前的一个急需解决的问题。
二、C++教学实践
(一)理论教学。理论教学重视基础知识,强调实用性,知识点实例化。针对学生的理解能力,做好知识点与实例的恰当融合,根据学生掌握情况,安排合理的实例数量。在授课中,采用引导式,案例式,使学生熟悉各种C++程序设计算法,为设计模式的引入打下坚实的基础。在理论教学讲解中要紧紧围绕教学原则,主要做到以下两方面:
1.突出C++中的实用技术。C++教学内容的选定应C++语言标准为基础,摒弃传统的C++教学面向对象内容以语法为主的教学模式,突出C++中的实用技术,包括完善的封装、派生、多态和模板,在构造函数中动态分配资源、在析构函数中释放资源的思想和异常处理等些面向对象的C++程序设计的精髓。
2.注重实例讲解。在C++程序设计内容讲解中,我们不仅要注重理论知识点的讲解思路清晰,更应注重实例的讲解,只有实例讲解的清晰明了,学生才能真正体会到各个算法的真谛,才能学会编程。因此,在各章节的实例讲解中,应在原来实例基础上进行扩充,就好比一个简单的例子,经过滚雪球的方式,达到知识不断积累,内容不断扩充,功能不断完善,既衔接了知识点,又增加学生的兴趣。
另外,理论教学中,应鼓励学生及时发言或讨论,从中获得自己想要的东西。在师生之间的这种交流过程中,老师不仅可以了解学生的学习情况,还可以根据学生反馈组织教学。
(二)实验教学。学习程序设计不能纸上谈兵,编程能力的培养必须强化动手实践[1]。教科书上的习题只是为了掌握语言特性,与实际的项目工程有一定距离;在还没有达到熟练运用各种技术解决问题前,做实际的项目也不是太好,这样学生是越来越迷糊。比较好的方法是找一些比较经典的例子,每个例子集中练习一个或多个知识点。
程序课程实验环节是重中之重。因此我们应重视实验教学,实验辅导及实验总结,引导学生利用课上及课余时间进行大量编程,积累编码感觉;鼓励学生多动手编程。
(三)培养编程能力。
1.基础编程能力培养。重视实验教学、实验辅导与实验总结,注重学生基础编程能力的培养,程序调试能力的培养;采用课内实验,课余上机辅导相结合的方式,完成基本知识点的实验。
2.调试程序能力培养。调试程序的过程就是发现错误并改正错误的过程,调试程序是程序开发过程中一个必不可少的阶段。因此,程序调试能力的培养同样是重中之重,程序调试能力的培养不是去帮学生调通程序,而是教会学生怎样去调程序。主要是指导学生怎样跟踪程序的运行,怎样设置断点,怎样单步运行,怎样使用Debug工具。
3.系统设计能力培养。在程序设计教学中,开展基于项目的协作学习[3],能够改变以往教学中大量的内容讲解、缺乏实际操作经验的局面,使课堂所学得到灵活运用。学生在完成项目的过程中,体验了真实问题解决的过程,锻炼了协作学习能力的同时,也使个人能力得以凸现。出色项目成果的完成,体验成功的喜悦,也增加了知识探索的动力。因此,吸收企业的“项目驱动式”培训模式,把自己看成是一位“教练”,把学生从书海中解脱出来,把“项目训练”当成重中之重。
通过开展基于项目的协作学习活动,给学生创设了真实问题情景和协作学习的环境,对程序设计类课程具有一定的借鉴意义,让学生在校期间开始积累开发经验,从而可以胜任企业需求。
另外,要注重C++ 程序设计思想的培养,使学生能够在面临实际问题时,借鉴先进合理的设计思路,充分理解企业需求,从大局的角度来审视项目工程。
三、总结
新的教学模式、教学方法有益于培养学生的编程能力,但也要同时采取与培养目标相吻合的考核方式。传统的闭卷考试方式已达不到对学生的学习情况进行有效、合理的考核,因此我们采取了项目大作业和上机考试相结合的考核方式,前者着重考查学生软件开发的大局观,占期末成绩的40%;后者着重考查学生对具体算法的编程实现能力,占期末成绩的60%。每学期的教学活动结束后,都要总结教学内容、教学方法和教学手段及学生实践能力培养情况,寻找出与市场需求之间的差距,逐步修改、完善,以达到理想的教学效果。
基金项目:黑龙江省新世纪教育教学改革工程项目(4859)
参考文献:
[1]王育坚,Visual C++面向对象编程教程[M].北京:清华大学出版社,2007,10.
[2]叶至军,C++ STL开发技术导引[M].北京:人民邮电出版社,2007.7.
[3]向模军、刘松青,Java教学的探讨和实践[J].计算机与信息技术,2008,(03):104-105.
作者简介:
马春华,女,汉族,黑龙江兰西人,副教授,主要研究方向:计算机控制理论及控制工程。