“C++程序设计”课程改革和探索
2009-03-17韩娜王洋关明山
韩 娜 王 洋 关明山
文章编号:1672-5913(2009)02-0106-02
摘 要:本文结合笔者多年的教学经验,从教学内容、教学方法、动手实践环节和考核方式多个方面探讨了C++程序设计的课程教学改革。经推广实践,证明这些措施能有效地提高学生的编程能力、自学能力、沟通能力和团队合作能力。
关键词:C++;教学改革;教学实践
中图分类号:G642
文献标识码:B
1 引言
随着面向对象技术的广泛推广,“C++程序设计”课程被越来越多地选为高校计算机及相关专业的基础课程。我校从2003年起开始将其作为计算机专业各个方向的专业基础课程,并从考察课逐渐成为考试课。该课程的教学目的有二:一是让学生建立起面向对象的思想,二是熟练掌握C++的基本语法能独立进行相关的开发。但是以往的教学经验表明,很多学生学完课程之后并没有达到预期的效果,不能将学习到的知识应用于实践,或无法将知识点连成知识面进而形成知识体系。
2 改革实践
传统的程序设计语言的教学一般分为两部分:课堂理论教学和上机实践两个环节。理论教学更多的是教师为主,学生更多的充当“听众”的角色,跟着教师的思路去理解、记忆知识。上机实践主要是用于消化课堂讲授的知识,偏重于编写功能比较单一的“小”程序,其中仅涉及到少量的知识点,同时留给学生的练习时间偏少,以至于对最后综合型程序的编写都无从下手。
我们采用一种全新的讲、练、讨论相互渗透结合的互动教学模式。将课程仍分为两大部分:课堂教学和上机实验。理论教学对课程的重点、难点进行讲授,课时约占课堂教学的3/4;其余的1/4组织学生进行讨论。上机实验按照课程开展及学生的层次分为三个层次,逐步深入递进。
2.1 课堂教学改革
2.1.1 “任务驱动”的理论教授
每节课开始以后老师先提出问题——给出本节课结束后应能够解决的任务。教师将完成任务所需的知识点一一列出,要求学生指出未知的知识点,教师着重讲解新的知识点、重点及难点,要求学生一起参与案例的完成,应用所需知识点并最终给出示范案例。
整个课堂教学力求学生带着问题去思考,利用知识点去分析解决问题,并熟练掌握知识点的应用。
2.1.2 自学为主的知识面扩展
布置谈论的题目或要求实现的任务,要求学生分成2~3人小组在课下查找资料,针对题目在课堂进行各种各样的讨论,或根据能力选择任务并提出各自的解决方案,集体谈论各方案的可行性或优劣性。
通过这种方式极大地提高学生的积极性,鼓励学生利用各种方式自学,对交叉学科、前沿学科有所了解;给学生提供了一个展示自己的舞台,并学习团队合作和沟通的重要性。
2.2 动手实践能力培养
2.2.1 基本知识点实验
基本知识点的应用对于大多数同学需要经历三个步骤:一是“模仿”,完成与案例相似的程序,在模仿中巩固和加深对新内容的理解,同时老师可以对学生一对一讲解未理解或掌握的内容;二是“修改”,在第一步的基础上进行加工,激发学生自主学习的热情。教师对关键实现提供指导性意见;三是“提高”,将一个有一定难度但未曾见过的问题交给学生,培养学生独立解决问题的难度。教师给予启发、引导,激励学生进行创造性思维。
2.2.2 单元性实验
当一个章节学习完毕后,安排一次单元性实验。该实验能够将本部分内容甚至于前续内容均应用于其中。单元性实验的题目相对稍大,并具有一定的算法设计思想。设计过程中有以下几个问题需要注意:
(1) 题目要贴近学生生活,便于学生理解,使得学生能通过实验解决现实生活中的问题。
(2) 综合运用关键知识点,培养学生综合应用知识的能力。
(3) 适当的工作量。单元性实验中要求每个学生能基本独立完成,根据学生的个体差异,提供多层次的题目供学生进行选择。
考核时按照所选题目的难度进行评分。例如基本级(难度最低)题目最终成绩应在60~70分之间,中级题目成绩在70~80分之间,高级难度在80分以上。
2.2.3 综合创新性实验
实践的最后一个环节就是综合创新性实验。要求学生2~3人自由组合,从教师给定题目中选择感兴趣并符合自身能力的题目进行设计和编码,并撰写最终的文档。
该阶段的实验应具有以下特点:
(1) 题目是真实项目的简化,由教师给出总体需求。学生对需求进行分析,并确定开发目标,制定开发计划。学生确定的开发目标可以不局限于给定的需求,以此充分调动学生的创新思维,培养创新能力。
(2) 学生分组后由组长负责分工和给定工作量衡量标准,培养团队合作。
(3) 学生按照开发计划独立完成编码工作。教师的作用仅为答疑、开发过程监控以及对共性问题进行总结与归纳。在此过程中,学生分析问题,解决问题的能力将得到有效锻炼。
(4) 涉及到课堂没有接触过的知识点时,鼓励学生利用各种资源去搜集资料,分析资料寻找答案,培养学生自主学习能力和解决问题的能力。
最后的考核通过答辩的形式完成,答辩评委可以由老师和学生代表共同担任。最终成绩应该包括:答辩、文档、源代码、功能及运行结果的考评。个人成绩与小组成绩密切相关,先确定小组成员的最高分,根据组长对组员完成工作情况的衡量给组员打分。督促所有组员能参与综合创新性实验并关心整个团队的成绩。
2.3 考核和成绩评定
作为一门考试课程,尽管强调课程结束后学生应用知识的能力,但笔试也是必不可少的一个环节。但是针对平时大量的实践环节,最终将期末成绩分成两大块:笔试成绩和平时成绩。笔试成绩占期末成绩的60%,其中除了基础知识点的考察,还增加了大量的编程题目,将知识的应用仍放在重要地位。平时成绩由4部分组成:上课表现(10%)+基本知识点实验(10%)+单元性实验(10%)+综合创新性实验(10%),其中上课表现包括上课出勤及讨论课发言表现。通过这种成绩的分布,督促学生重视平时的学习,改变以往考前“临时抱佛脚”的做法。
2.4 课堂教学的延伸
课堂教学对于提高学生的知识掌握、熟练运用知识还远远不够。我们应更多地将与学生的沟通互动扩展到课堂教学之外。通过以下几种方式从多渠道延伸课堂教学:
(1) 将教师的博客作为与学生交流的主要场所,可以将课件、程序、电子教案等共享。开辟专门的板块,将学习过程中的体会心得与学生分享,并上传多种学习参考资料,帮助学生扩展知识面。留言板方便学生间接地与教师进行交流和探讨。
(2) 组织学习兴趣高,成绩良好的学生成立创新小组,在教师指导下,关注新技术的发展动态,选择感兴趣的方面进行深入研究,通过备战各类比赛,考取认证等方式,培养学生研究性和创新性学习能力。
(3) 建立专门的技术谈论QQ群,建立不间断的学习答疑氛围,使学生能通过网络帮助别人的同时也提升自我。
3 结论
通过一个学期的改革实践,“C++程序设计”课程取得了良好的教学效果,越来越多的同学适应并积极参与到知识能力的应用培养过程中来,动手能力和自学能力得到了较大的提升,教学质量有所提高。
参考文献:
[1] 白日霞. 创新教育评价体系的构建与实践[J]. 中国高教研究,2006,(6).
[2] 张锦祥. 高级程序设计语言课程教学改革与实践[J]. 浙江教育学院学报,2007,(7).
[3] 韩恺,贾晓辉,刘凤华. JAVA语言实践教学的改革探索[J]. 计算机教育,2008,(6).