“C++程序设计”课程改革与实践

时间:2022-10-30 08:59:03

“C++程序设计”课程改革与实践

摘要:在对“C++程序设计”课程教学改革的实践中,对课程教学中现有问题进行了调查和分析,并针对上述问题从兴趣激发、增强互动、合理安排实验等方面进行了改革和实践,在一定程度上激发了学习者的学习兴趣,在循序渐进掌握知识的基础上提高了分析和解决问题的能力,对课程教学有较好的促进作用。

关键词:程序设计;C++;教学改革

作者简介:李传珍(1980-),女,北京人,中国传媒大学信息工程学院,讲师;徐品(1958-),男,北京人,中国传媒大学信息工程学院,高级工程师。(北京 100024)

基金项目:本文系中国传媒大学优质示范建设课程项目(项目编号:yzkcx0915)的研究成果。

中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2013)28-0110-02

“C++程序设计”课程是中国传媒大学(以下简称“我校”)信息工程学院电气信息类大学生的必修课程。该课程以C++语言中的面向对象机制为主,主要介绍面向对象程序设计的方法和C++ 语言的基本概念。学生在学习过程中可以通过大量的程序实例和相关练习,逐步掌握C++的面向过程和面向对象的功能,从而掌握面向对象程序设计的基本知识和基本技能。

一、“C++程序设计”课程教学现状分析

在众多课程中,本课程有着独特的地位和作用。第一,本课程是我校C++软件课程设计的基础,也是很多专业实验课(如数字图像处理、多媒体技术原理等)的基础,更是计算机二级(C++)的基础。第二,许多高校对研究生的编程能力有一定的要求,而C++语言则是重要的工具之一。第三,就业市场对C++高级软件工程师的需求一直较大,并且熟悉C++语言的程序员更容易掌握其他语言。因此,熟练掌握C++程序设计语言,必然会为学生未来在毕业、深造、就业竞争中打下坚实基础。

尽管“C++程序设计”课程是一门非常基础且有重要价值的课程,但是由于课程抽象、学生缺乏学习兴趣、学习方法不当,以及非计算机类学生编程语言基础薄弱等问题,一些学生在学习过程中感觉吃力,无从下手。为了了解学生的学习现状,并有针对性地进行改善,笔者几年来针对课程教学和课程实验等环节设计了问卷调查,包括:

1.对未来的打算

在众多学生中,仅有41%的学生有意愿将来从事理工科类工作并继续深造、研究。大部分学生对未来的规划偏向于文科、艺术类专业。这与招生过程中的调剂、学校整体特点等因素直接相关。

2.课程内容是否有帮助

仅有40%的学生认为本课程会对其今后的发展有帮助,60%的学生甚至并不清楚本课程对后续相关课程的基础作用。

3.每周的自主上机时间

作为一门计算机语言类课程,实践的重要性不言而喻。64%的学生完全没有按照教师要求主动保证每周不少于2小时的自主实践时间。通过沟通,部分学生认为遇到困难难以解决是阻碍自主上机的重要因素。

4.实验方式

41%的学生表示希望在教师引导下独立完成;45%的学生表示希望在教师完全带领下完成实验;2%的学生表示对课程内容毫无兴趣,自然也不会独立完成实验;其余的学生则是因为无法解决实践中的问题而退缩。

从上述调查结果看,本课程面临的主要问题是:在部分学生完全没有学习主动性,学生C语言基础薄弱,且课时量不能增加的前提下,怎样有效地提高学习效率?在这种需求下,设立如下改革思路:提高学生的学习兴趣或至少是增强学生的学习动力;重点培养面向对象程序设计的思维,突出编程能力培养;增强与学生的课外互动;实践过程中循序渐进,有材料可依。针对以上改革思路,本课程在实际中做了一些尝试。

二、“C++程序设计”教学改革实践及效果

1.从“问题”到“程序”

兴趣是推动学习者求知的内在力量,[1]然而在C++语言基础学习中,很多学生对课程内容缺乏学习兴趣,或是在学习过程中兴趣逐渐消退。针对这个问题,笔者在课程中不仅修改了主要例题,将抽象的变量、对象更改为和现实事物对应的变量和对象,还在讲解过程中从具体问题着手,穿插后续课程的实例进行演示,引出重要的基础概念。这种做法能够达到多重效果:一是让学生提前体验到课程成果,激发学习兴趣;二是了解本课程基础内容和后续课程之间的关系,明晰课程的重要性;三是和实际问题结合,在实例讲解中培养面向对象程序设计的思维,教师“举一”,学生“反三”,增强学生解决实际问题的能力。

例如,很多教材给出的例题[2]与实际应用脱节,很多例题中采用“A”、“B”的类名,并没有体现其具体代表的含义,不能体现“类是对现实事物的抽象”这一思想。教师在课程中从实际的课程设计题目《“画图板”程序设计》引入,并且向学生强调演示的“画图板”是由学长独立完成的,并鼓励学生进行相关概念的学习和实训也努力做出类似的应用程序,向学生传递一种积极的期望。在实际教学中,首先确定画图板能画出直线、圆形、正方形等形状。在面向对象思想中,继承关系正是被用来描述这种“派生类是一种基类”的。明白了现实事物和C++语言中概念的对应关系,再辅以具体语法讲解,能让学生明确怎么从现实事物映射到具体的编程语言。为了进一步提高学生的抽象能力,需要反复列举实际问题,引导学生独立完成实例的分析和类的抽象,并在此基础上用C++语言描述上述抽象过程。

通过对学生的学习效果进行观察发现,教师可以帮助学生建立分析问题—解决问题—语言表达的过程,学生可以仿照该思维模式进行问题的分析和程序的编写,真正做到举一反三,并在面向对象程序设计思维能力和编程能力上均有所提高。同时,课程末期的问卷调查表明,看到学长的成果,70%以上的学生产生了积极的学习意愿。这表明该措施对学习者的心理产生了积极的影响,为后面的课程学习奠定了良好的基础。

2.增加网络互动,解决课外问题

从教学现状的分析看,部分学生认为课下遇到问题不能解决成为降低学习主动性的主要因素之一。因此,在日常教学活动中需要指导学生正确认识学习过程遇到的困难。本课程是一门计算机语言类课程,在学习方法上可将其和语言类课程(如英语等)做类比。这些课程均包括一定的词汇、语法,都是对现实问题的描述(只是描述时所用语言不同)。也就是说,想要熟练掌握C++语言,需要像学习一门外语一样,做好打持久战的心理准备。在这场持久战中,学生要正确面对遇到的困难,做到知难而上。但是面对困难的决心仅靠“不畏惧”的精神是不够的,还需要掌握克服困难的办法。因此,教师要在必要的时候给予及时的帮助,帮助学习者逐步建立学习的信心。

面对面交互是一种效果非常理想的模式,但是受限于学生和教师时间不能统一、部分学生不愿意面对教师等因素,面对面的交互只能在有限时间、特定的地点进行,大大降低了答疑解惑的时效性。随着计算机网络技术的飞速发展,利用网络进行教学和辅导教学已经成为当前教育技术和教学活动中的一种重要形式。2008年我校网络教学综合平台正式开通,本课程率先采用网络教学平台实现作业提交、问卷调查、材料、通知公告等教学环节。其中,“课程论坛”使辅导答疑不受时间和地点的限制,有效提高了学习者的学习积极性和学习效率。其优势还在于两点:一是学生的问题和教师的解答经过一定时间的积累,能够成为可重复利用的宝贵资源。例如,有些问题的浏览数量可达数十次,当学习者遇到和其他人同样的问题时,仅需浏览教师已做出的回复即可,避免了同样问题的重复回答和等待教师回复造成的时延;二是教师对学生的回复学生本人可重复查看,加强了对学生的心理暗示,并有可能产生“皮格马利翁”效应。[3]例如,教师在回复中会增加鼓励性的话语,这些话语落在字面上,能引起学习者大脑皮层的愉悦感,同时能激励起学生的自信、自觉、自强。许多学生在自主学习中受到挫折后,只要看到这些落在字面上的鼓励和“积极的期望”,不需要太多时间重新调整心态,也不需要再次得到教师的当面肯定,就会自己振作起来。

该项措施能够及时解决学生在自学过程或自主上机过程中出现的问题,尽可能地避免了“知难而退”现象的发生,阻止了部分学生的流失。同时,由于在网络交互中可以更多地解决C语言基础薄弱引起的问题,减少了因复习C语言内容造成的学时消耗,减轻了课时缺乏的紧迫感。针对该项改进措施进行问卷调查,95%的学生认为通过网络课程论坛可以与老师及时沟通,很有帮助;只有5%的学习者比较排斥网络交互,这可能是由于个体沟通习惯或提问方式不当造成的提问低效引起的,教师需注意引导学生有效提问。当然,这也对教师网络在线的时间提出了较高的要求。

3.实验改革,促进自主学习

在课程实验课时不足的情况下,指导学生自主进行上机练习,是对课程实验的有益补充,也是学生独立完成课程实验任务的锻炼机会。但是从实际情况看,大部分学生并没有像教师要求的那样,主动保证足够的课下自主实践时间。刚刚接触编程的人需要面对各种程序中的错误,如果能够较好地解决实际中的问题,能够大大激发他们的学习兴趣;反之,则会在一定程度上抑制学习的积极性。因此,需要在自主上机初期给予学生充分的书面指导,引导学生掌握必须的程序编写技巧和调试技巧。这种“授之以渔”的实验指导书,遵循了由浅入深、由易到难、由细致粗、循序渐进的指导原则。指导书中的部分内容在实验课中由辅导老师指导完成,剩余部分则布置学生课外时间自主完成。

在早期的自主上机和实验课程中,实验指导书尽可能详细地描述上机过程和上机过程中遇到的问题以及解决办法。只要学习者按部就班地遵循实验指导书的指导,就能轻松实现实验指导书要求的内容。在课程实验的后期,实验指导书中仅给予必要的实验提示,由学习者独立思考完成题目要求。在要求自主学习的截止日期之后,由教师在网络平台上实验题目的参考答案,供学生参考。实验指导书能帮助学习者在自主学习中快速掌握编程技巧,快速解决程序错误,并逐步训练其自行解决问题的能力。

从结果看,能够按照教师进行课下自主学习的学生在实验课中表现更突出,能够在规定时间内完成要求的内容,并且能够独立解决实践中出现的实际问题。从学生反馈情况看,大部分学习者能够接受和遵循实验指导书的指导,通过自主学习达到入门的要求,培养了解决问题的能力。对于小部分不能跟上的学生和不能完全体会实验指导书作用的同学,还需要在实验课程中着重辅导,引领其入门并学会使用实验指导书。

三、结论

本文对C++语言基础实际教学中出现的常见问题进行了分析,通过实例引入、增强课外网络互动、改革实验指导书等形式,在一定程度上激发了学习者的学习兴趣;并通过以实践为主的学习方法帮助学习者建立面向对象思维方式和提高编程能力;对于自主学习中遇到的问题,通过实验指导书让学生“有法可依”。这些方法能够解决实际中出现的部分问题,对“C++语言程序设计”教学有较好的促进作用。此外,在多年的教学中发现,因为学习者个体差异(包括学习基础、学习能力、学习动力等)十分明显,而那些所谓的“学困生”往往会对其他学生产生消极的影响,因此还需要继续探索怎样针对学习者的个体差异进行教学尝试。

参考文献:

[1]朱文彬,赵淑文.高等教育心理学[M].北京:首都师范大学出版社,2007.

[2]吕凤翥.C++语言程序设计教程[M].北京:人民邮电出版社,2008.

[3]陈敏.皮格马利翁效应[M].北京:北京工业大学出版社,2005.

上一篇:基于计算思维培养的离散数学教学研究 下一篇:地方本科院校物理学专业应用性课程体系构建研...