摘要:C++程序设计课程在计算机科学与技术、软件工程等专业的课程体系中处于基础地位,它对面向对象的软件设计思维培养具有重要作用。为提高教学质量,结合专业培养目标,阐述从课程教学目标设定、教学内容选取、教学方法与手段、实验教学与管理、考核与评价方式等方面进行课程教学改革的过程,指出改革的主要思想与实施方法。
关键词:C++程序设计;教学改革;实践
面向对象C++程序设计是计算机科学与技术、软件工程等相关专业的基础课程之一,其主要特征是抽象、封装、继承和多态。由于引入这些特征,面向对象程序比传统的结构化程序具有更高的可重用性、易扩充性和易维护性。面向对象开发方法已成为开发大中型软件的主流方法。为培养学生的程序设计能力和面向对象编程思想,许多高校的相关专业都开设了C++程序设计课程。因为C++涉及概念较多,语法相对复杂,且C++编译器相对于C编译器在程序运行的背后会做更多的事情,如对象的构造和析构、默认函数的自动创建等,使C++程序设计相对于C程序设计更难学,学生在学习和实际应用中出现的问题比较多,对相关概念理解困难,学习过程中成就感不强,学完之后还是不知道如何应用,很难达到预期的效果。为提高C++程序设计课程的教学质量,许多教学工作者提出了自己的一些教学改革思路,并付诸于实践,取得了很好的效果。由于每个学校的自身差异和学生层次差异等原因,在借鉴他人教学经验的同时,也很有必要针对自身的教学对象研究课程教学,以提高教学质量。在实践中,我们通过设定教学目标,合理选取教学内容,采用灵活的教学方法与手段,加强实验教学与管理,改革考核与评价方式,进行课程教学的探索与改革,并取得了较好的效果。
1.明确教学改革目标与思路
吉首大学软件工程专业以软件企业人才需求为导向,以高素质软件工程师培养为目标。C++程序设计课程在专业人才培养环节中处于基础地位,对培养学生的软件设计思维和程序设计能力具有重要作用。该课程于第二学期开设,其前导课程是c程序设计和计算机基础,后续课程有数据结构、算法设计与分析等。由专业培养目标及课程体系设置决定本课程的教学目标是通过课程教学及相关改革,使学生掌握面向对象的基本概念,具备面向对象程序设计的基本思想,学会以面向对象的思维分析并解决问题。在课程实施中以CDIO高等工程教育理念为指导,突出工程化教育特点,突显应用型专业特色。
2.精选教学内容
面向对象软件开发方法是吸收了软件工程领域的有益概念和有效方法而发展起来的一种软件开发方法。它集抽象性、封装性、继承性和多态性于一体,可以帮助人们开发出模块化的,数据抽象程度高的,体现信息隐蔽、可复用、易修改、易扩充等特性的程序。学习程序设计语言的目的是应用语言编写程序解决实际问题。对于软件工程专业的学生,在学习C++程序设计时必须渗透面向对象软件开发相关思想。由于C++本身涉及内容较多,受理论和实践教学课时数限制,要精选教学内容,不能面面俱到。我们在软件工程相关思想的指导下,从软件设计实际需要出发,确定了本课程以面向对象程序设计的方法为核心,以C++语言中的面向对象机制为主要内容,包括封装、继承、多态、模板和异常几个大的部分,舍弃一些细枝末节的语法,在适当的时候引入《Thinking in C++》《Effective C++》等优秀书籍中的一些思想和经验。在教学中要明确编程语言只是解决问题的工具,解决问题的方法更为重要,讲解相关知识点时要明确这些知识点在软件设计中有何作用,要注重面向对象程序设计过程中大的程序框架的合理性以及具体处理算法的正确性。
3.改革教学方法与手段
1)引入多种教学方法,逐步形成以学生为中心的学习模式。
教学方法是影响教学质量的一个关键因素。通过开展教学方法设计活动,引入“启发式、案例式、项目式”等多种教学方法,逐步形成以学生为中心的学习模式,最终提高教学质量。启发式教学注重对学生的引导,并强调教学互动性,通过问题激励学生积极参与整个教学过程,使学生由被动学习转化为主动学习。启发式教学方法运用起来有一些难度,但教师应该经常应用这一方法。课程中抽象的或是细节的问题都可以涉及启发式,对于较大问题的提问,任课教师在备课时应该充分考虑,把握好问题和引导的方向。对于一些小问题的启发,任课教师可根据实际授课时学生的表现决定,如数据成员的确定、函数返回类型的确定、参数的选取、返回语句的写法等都可以进行一些启发。案例教学法打破了以理论知识点为中心的传统教学模式,将知识点融入到具体实例中,使学生在模仿中掌握对抽象概念的感观认识。对于本课程中封装、继承、多态、模板和异常几个大的知识模块,每个模块至少设计一个教学案例。每个教学案例应包含该模块主要知识及相关程序设计方法。项目驱动教学法以项目为主线开展教学过程,把相关知识点融入到项目的各个环节中,遵循由简到难、循序渐进的原则。本课程中的项目式教学主要体现在课程设计环节,比如在课程之初布置一个连连看游戏或是自选其他小游戏或小系统,要求用C++编程实现,并随着学习的深入不断完善该程序。实际教学中,一个项目虽然很难包含整门课程的全部要点,但它通常要求学生自学另一些知识,这样不仅拓宽了知识的广度和深度,更能培养学生自主学习、分析问题及解决问题的能力。
2)现代与传统手段相结合,提高教学质量。
应用现代化教学手段有利于提高教学质量,教学中应将现代与传统手段相结合。本课程课堂教学以多媒体为主,并与板书有机结合。多媒体教学信息量大,图文直观生动,可增强学生对程序设计的感性认识。一般可以在多媒体教室开展教学,必要的时候也可以在实验室利用网络环境进行屏幕同传。板书是一种传统的教学方式,在进行逻辑推导的时候有利于引导学生充分思考。
4.加强实践教学与管理
1)设计3层实验教学体系,培养学生实践能力。
C++程序设计是一门实践性很强的课程,为突出工程化教育特点、突显应用型专业特色,需加强实践教学与管理。按层次递进的方式,围绕课程教学目标精选实验题,构建C++程序设计课程基础型、综合设计型和研究创新型3个层次的实验教学体系,通过教学计划内规定学时(吉首大学为16学时)和开设第二课堂(30学时)的方式完成3个层次的训练。其中基础型和综合设计型实验主要使学生掌握C++语言中的面向对象机制,培养学生面向对象程序设计的基本思维。这次实验要在教学计划规定的实验课时之内完成,要求任课教师设计实验项目并编写对应的实验指导书。研究创新型实验主要提高学生的实践能力,培养创新精神和团队精神,在课程设计中按应用项目的方式设置,在第二课堂采取“做中学”的方式口’在教师的引导下由学生自主完成。对于课程设计中的应用项目,任课教师编写课程设计任务书,给出系统的主要需求,要求学生按软件工程的方法,从需求分析到系统分析与设计,再到编码与测试,最后写出系统设计总结。
2)开设第二课堂,培养学生工程应用能力。
为进一步培养学生的工程应用能力,我们开设了第二课堂,在晚上和周末开放实验室,并加强对教师和学生的管理,安排任课教师轮流值班。教师作为学生学习的引导者,提供和课程配套的学习材料和相关项目实践任务。在教师的引导下,学生可独立或以小组讨论的方式完成相关任务。教师定期检查任务完成情况。在课程教学结束时,要求学生演示并讲解自己的项目开发情况,由任课教师和其他专业教师组成评定小组进行评分。另外,为进一步满足学生个性化学习的需要,学院另外创建了学生创新实验室,该实验室只配置了服务器、网络、电源、桌椅等设施,学生自己可带计算机进入,该实验室由学生自主管理、自主学习,教师布置相关任务,定期指导、检查并点评。
5.改革考核与评价方式
1)理论与实践并重的期末考核方式。
学习C++程序设计的目的是应用它指导或解决实际问题。该课程需要突出对实践能力的考查,这就决定了本课程的期末考核要综合考虑理论和实践两部分内容。理论部分主要考查学生对基本概念的理解和对基本知识的掌握情况,实践部分侧重考查学生的综合应用能力。在实际操作中,理论考试占60%、实验考试占40%,这两部分成绩都在期末完成,占课程总成绩的70%。理论考试试题一般包括选择题、填空题、读程序写结果、程序设计题等类型。实验考试题都为程序设计题,采用4选3或5选3的方式,从程序正确性、程序风格、编程思路等方面综合评价。
2)平时成绩与期末考核相结合的评分方式。
期末考核重在体现学习的结果,平时成绩则侧重于体现学习过程。在课程总成绩中,平时成绩占30%,即本课程有30分来自平时的学习过程。平时成绩一般包括出勤与作业情况、平时实验情况、课程设计情况,以上3项各占总成绩的10%。在学期开始第一堂课的时候将课程评分方式告知每一个学生,这就要求学生必须抓紧平时的学习,若平时成绩小于15分,则取消本课程期末考试资格。
6.结语
C++博大精深,既支持面向过程,也支持面向对象;既可作为大学生学习程序设计的工具,也可作为资深程序员从事实际软件项目开发的利器。为使学生学好C++,将程序设计水平提高到一个新的层次,需要教师在教学过程中不断研究教学并进行实践;同时,学生也需要不断努力,扩大阅读量,增加代码量,勤于思考。只有师生在教与学的过程中形成良好的互动,教学质量才能得到保证,教学目标才会逐一实现。