独立学院计算机专业C++课程教学改革与实践

时间:2022-09-04 03:41:08

独立学院计算机专业C++课程教学改革与实践

摘 要 分析独立学院C++课程教学现状,总结当前教学过程中的不足,并针对存在的问题,从课堂管理、教学内容、教学模式、教学辅助手段、课程考核制度等方面,提出C++课程教学改革的方法。

关键词 独立学院;计算机专业;面向对象C++程序设计;教学改革

中图分类号:G642.0 文献标识码:B

文章编号:1671-489X(2017)02-0103-04

Teaching Reform and Practice on C++ Course of Computer Ma-jors in Independent Colleges//ZHU Jun, CHEN Linlin, ZHU Xian, XIE Ling, SHUAI Huiming

Abstract This paper analyzes the current teaching situation and sum-

marizes the disadvantages during C++ teaching and learning in inde-

pendent colleges. Thereafter, we put forward corresponding reform methods on classroom management, teaching contents, teaching approach, assistant teaching measure and examination system.

Key words independent college; computer major; object-oriented C++ programming; teaching reform

1 C++程序O计课程的地位

随着“互联网+”时代的到来,我国高度重视软件产业的发展,为软件产业提供了良好的发展环境。在国家政策的保障下,我国软件产业基础建设已初具规模。程序设计作为软件开发的基石,是开展软件开发工作的必备技能。因此,程序设计类课程已经越来越受到各高校的重视。在该类课程中,面向对象程序设计(以C++和Java语言为主要代表)是与面向过程程序设计(以C语言为主要代表)完全不同的一种程序设计模式,是目前软件开发和程序设计的主要方法[1]。

C++又被称为“带类的C”,其主要特征是具有封装性、继承性和多态性,具有数据结构丰富、应用面宽、通用性和可移植性好、目标程序效率高等高级语言的优点,是众多程序设计语言中最有活力和应用最为广泛的一种。自20世纪90年代中期开始,面向对象C++程序设计课程逐步成为各高校计算机专业开设的专业必修课程,该课程掌握得好坏,不仅会影响学生对整个学科知识体系的理解,更能反映出学生的专业素质和技巧。

2 独立学院C++课程教学现状

独立学院计算机专业培养目标 独立学院是从普通高校衍生出来的、具有民办机制的本科院校。随着我国教育体制的不断革新,向应用型本科院校转型已经成为独立学院的发展趋势。计算机专业作为实践性非常强的专业,要求学生具有开拓精神和解决计算机应用领域实际问题的能力,能够成为综合素质高、实践能力强的高级应用型人才。

为了实现这一总体目标,独立学院计算机专业面向对象C++程序设计课程应着重培养学生掌握程序设计的思想和方法,切实提高学生的动手编程能力,注重实践教学,使学生打下坚实的基础,提升学生在专业领域中应用计算机解决实际问题的意识和能力。

独立学院学生的特点 尽管大部分独立学院是以地方高等院校为母体,其区域定位、办学层次的定位等与母体有着一定的相似之处,但在生源质量和教学设施等方面仍存有较大差异。与母体学校的学生相比,独立学院的学生的知识基础没有那么扎实,且学习习惯、学习的主动性与自觉性等方面要稍微欠缺,但是他们动手能力较强,对新事物的接收能力、创新能力、组织沟通能力往往并不比一本的学生差。

以南京理工大学紫金学院为例,计算机专业的学生在国家级甚至是国际级的软件人才大赛(如微软创新杯大赛、中国大学生服务外包创新创业大赛、蓝桥杯大赛)中取得许多优异的成绩。总的来说,独立学院的学生对实际的上机编程实践和真实的软件开发过程更感兴趣。

当前C++教学过程中的不足 因为面向对象C++程序设计课程本身具有较强的理论性和非常高的实践操作性,内容繁多、概念复杂、语法严格,所以学生在刚刚接触这门课程时通常会觉得难以理解,这给C++教学工作带来一定的困难。同时,本门课程大多数在大学一年级开设,对于大一学生而言,他们对计算机的熟悉程度参差不齐,尤其是在独立学院学生自主学习意识不是太强的情况下,要在较短的时间内建立程序设计思维,独立编写能够正确运行的程序,的确有一定的难度。目前,独立学院计算机专业C++课程教学过程主要存在以下问题。

1)忽略了课堂管理。与中小学相比,大学教师对课堂纪律的管理没有那么严格。由于C++课程是计算机类各专业的必修课,经常采用大班教学的方式,学生人数较多,座位也不固定,加之教师一般不认识所有学生,因此,一旦有个别学生缺课,教师很难发现,只能通过点名的方式来检查学生的到课情况,这往往需要占用宝贵的上课时间。此外,在授课过程中如果发生某个学生违反课堂纪律,任课教师往往不及时点名阻止,导致学生上课随意说话、睡觉、玩手机等不良现象时有出现。

2)教材不够“精、细、新”。目前大部分学校的教学计划是连续两个学期分别开设C程序设计课程和面向对象C++程序设计课程,而由于C++语言是从C语言发展而来的,因此,C++教材的前半部分往往与C语言教材所讲的内容一致,教师经常是从后半部分开始讲,一本教材只用到一半的有效内容;由于教材篇幅和教学学时有限,大部分所选教材并不能真正在几个重要的关键技术上让学生理解透彻。此外,由于计算机技术发展很快,陈旧的教材内容往往落后于目前市场需求,与时代相脱节。

3)忽略了学生实践能力的培养。大多数C++教师仍采用课堂讲授、布置作业及实验这种“教本位”教学模式,将教学重点放在语法规则等理论讲授上,采用“提出概念―解释概念―例题讲解―习题”的教学思路,学生只有遇到上机时才有机会进入机房面对电脑进行实际操作。因此,多数学生通过一学期的学习之后,只会解决书本和试卷中的练习题,不会解决实际问题,不能动手编写较复杂的程序。此外,在C++程序设计教学过程中,部分教师轻视设计、编码以及团队协作能力的培养,忽视工程经验的积累,导致学生不会融会贯通,程序调试能力差,对程序设计的积极性不高。

4)传统的作业布置、提交和批改方式。C++课程的作业一般是程序编写类的题目,且作业一般通过纸质材料上交。对教师来说,批改作业是个既耗时又耗精力的事情,而且对于学生的错误或不足部分,只能通过叉或问号来体现,把作业发还给学生的时候,学生也不一定会去看,或者看了也不一定改。

5)片面的、不合理的考核方式。大多数情况下,C++课程的考核方式是通过一张试卷来决定最终成绩。这种考核方式有两大弊端。

①很多学生为了应付考试,在复习过程中只注重死记硬背,甚至连程序代码都是强记的,并没有真正理解程序的逻辑与结构,只会纸上谈兵。

②由于采用笔试的方式进行考核,考核的重心偏向理论而不是实践,因此,有些实践能力较强的学生所取得的成绩可能反而没有对理论知识进行“突击”的学生好。这样的考核方式并不能真正反映出学生对C++程序设计掌握的好坏程度。

3 C++课程教学改革内容及收获

加强课堂纪律管理 良好的课堂纪律是课堂教学得以顺利进行的重要保证。根据独立学院学生的特点以及多年的教学经验,笔者认为可以通过以下两个方面来加强课堂管理。

1)固定座位,确保课堂井然有序。在第一节课上课前,提醒学生选择好座位,在座位固定之后让班长写好座位表,要求学生以后每节课都必须按照座位表上规定的位置入座。教师通过座位表,既可以一眼看出学生的到课情况,又避免了占用宝贵的课堂时间来点名。同时,该方法方便了教师提问某个具体的目标学生、及时点名制止某学生影响课堂纪律的行为。

2)严格执行“手机入袋”制度。独立学院的大多数学生缺乏学习自觉性,上课时往往不由自主地就玩起了手机,为避免这一现象,笔者在教学中严格执行“手机入袋”制度:以班级为单位,每个班级购买一个手机收纳袋,并为收纳袋上的每个小口袋写上学号;学生在进入课堂之前,将手机放入与自己学号对应的小口袋中,随后坐于固定的座位上。该方法有效地杜绝了学生上课沉溺于手机的现象,提高了上课的专注力。

合理安排与组织教学内容 为了能够在有限的课堂时间内展示出最优化的教学内容,采取以下5个措施。

1)构建“多元化教材”模式。“多元化教材”模式是指学生通过综合利用“课本+参考书+MSDN帮助文档+网络”获得知识和技能。该模式既能提升学生阅读中英文技术文档的能力,又可以让学生对最新的编程技术有所了解[2]。

其中,针对之前提出的问题,在选择课本教材的过程中更倾向于把面向对象与面向过程有机地结合起来,尽早引入面向对象的概念,在学习之初就让学生接触到C++程序设计语言“封装性”的特点,并要求学生编写的所有程序都需要带有“封装”功能,从而尽快融入面向对象的世界中。由于独立学院的学生往往比较依赖教材,因此,所选择的教材必须重点突出,以讲基本原理为核心,既要涉及基本算法和数据结构的初步知识[3],又要利于学生后期向Java程序设计思想过渡。

鉴于以上考虑,采用谭浩强教授编著的《C++面向对象程序设计》(第2版)作为课本教材,该书直接从C++对C的扩充开始讲起,其最大的特点是语法讲解翔实全面,适合初学者学习理解,可以与课堂教学相互补充[4]。

2)强化基础,突出重点内容。在进行C++课程教学时,既要注重面向过程部分基础知识的巩固,又要始终坚持把重点放在面向对象程序设计思想上。尽管通常情况下学生在学习C++之前已经学习了一学期的C语言,但由于独立学院的学生对程序设计入门较慢,基础不够扎实,尤其是对指针部分的知识感到难以理解,因此,在组织和安排C++课程教学内容时,教师可首先安排4~6课时,通过讲解综合习题(以指针、函数、数组内容为主)甚至是学生C语言期末试卷,帮助他们对面向过程的基础知识进行复习和加强。在帮助学生进行查漏补缺之后,可开始引入类和对象的概念,重点让学生理解两者之间的关系,并在此基础上介绍构造函数和析构函数,让学生对面向对象程序设计的“封装性”有切实的体会和深刻的理解。

此外,C++的另外两个特性――“继承性”和“多态性”则既是重点又是难点,教师在讲授时应注意让学生学会单一继承、多重继承的方法,理解“继承性”不仅能减少代码的冗余性,更可以使得一个庞大的系统变得条理清晰、便于管理;在讲授多态时,要让学生了解子对象、父对象的赋值兼容规则,并学会如何通过父类型的指针或引用调用子类型的成员方法,进而拓展到虚函数、虚基类等难点的学习。对于其他的一些比较琐碎的语法,如友元、运算符重载等,教师可适当介绍,而不需要花太多时间在课堂上讲授,只需让学生理解语法规则即可。

3)引入实际项目案例。由于计算机软件的发展日新月异,因此,在讲授C++程序设计的语法和思想时,不应光讲死板的理论和烦琐的语法,而应与时俱进,将实际开发案例引入教学内容中[5]。一方面,教师在课堂讲授时将语法概念融入实例中,结合实例讲解算法设计思路和编程思想;另一方面,学生在上机练习过程中结合布置的实案例分析问题、解决问题。实践证明,引入实际项目案例的做法能够激发学生的学习兴趣,增加学生的成就感。

4)重视程序调试能力的培养。学生在写完程序代码之后,需经过编译、连接、运行三个步骤才有可能得到预期结果。在这个过程中,很少有人能不经过任何调试就一气呵成地完成程序。而在组织教学内容时,教师往往忽略了程序调试能力的培养,初学者(尤其是独立学院的学生)遇错后往往就手足无措甚至直接放弃。

一般来说,程序的错误有两种:编译错误和逻辑错误。其中,编译错误调试起来比较简单,教师在授课过程中应注意要求学生认真阅读编译器的报错原因,并注重经验积累,初学时若在报错原因中遇到出现频率较高的单词或句子,可摘抄下来加深记忆;逻辑错误则比较难解决,教师应教会学生利用调试工具来解决问题,比如断点设置、单步调试,将动态执行过程分解为静态片断,推测错误来源。

5)编制校本作业。学生具备了相关的知识与能力基础后,课后应温故而知新。根据多年的教学经验,笔者联合C++课程组的其他教师共同编制适合本校学生的习题集,其中的题目大多数来源于历届期末考试的易错题以及历年计算机等级考试的真题。在选择习题时,力求每道题目都具有针对性,希望通过作业做到“夯实基础,促进发展,反馈教学”。

改进教学模式,提高学生实践能力 C++课程的最终目的是让学生学会程序设计的思想和方法,将理论知识转换为实战能力。为了达到这一目的,进行以下改革。

1)讲练统一,理论授课与上机实训互动。在传统教学模式中,C++课程的理论教学通常在教室进行,教师一边播放PPT一边讲解知识点,但PPT往往无法演示程序的编写、执行过程,学生只有课后才有机会去验证程序代码的正确性。在本次教改中,不管是上机还是理论课的教学,所有的授课工作都和上机实践一起全部放到实验室去完成。教师不再是照本宣科,学生也不再是光听不练,而是在讲语法规则的同时运行实例程序,并对程序进行现场修改、分析、调试,让学生参与理论内容的检验与实践。

2)双主教学模式。为了改变“以教师为中心”的传统教学模式,采用“双主教学模式”,即教学过程中既发挥教师的主导作用,又充分体现学生的主体作用。在双主教学模式中,坚持“教师精讲、师生互动、学生动手”的原则:教师仍然发挥教学的组织和主导作用,控制整个课堂进程,但不会自始至终处于中心地位,而是适当时候指导学生主动思考、探索,让学生成为课堂的另一主角,做到自主学习。

3)以任务组织教学内容。教师在授课时采用以“解决问题、完成任务”为主的多维互动式的教学理念,将教学内容的各个部分组织到相应的任务中,围绕任务展开教学。学生主动学习、积极探究,根据任务的完成结果检验和总结学习过程,主动构建探究、实践、思考、运用的学习体系。考虑到独立学院学生的基础,任务的设计难度应适当,要符合学生当前的认知水平,从小任务逐渐过渡到大任务,循序渐进地培养其解决问题的能力。在完成任务的过程中,可鼓励学生组队讨论,以培养学生项目开发和团队协作能力,积累工程经验。

4)引入“2W1H”教学方法。“2W1H”分别是指What、Why、How。“2W1H”教学方法是指让学生在清楚地知道了“是什么”和“为什么”之后,再去研究和实践“怎么做”。比如在介绍类的概念时,教师首先从身边的自然世界入手,让学生知道类是什么,为什么要对自然界中的万物进行归类,最后激发学生思考怎么做才能定义一个新的类,进而产生新的对象。“2W1H”教学方法对吸引学生兴趣有很大的帮助,并能培养学生主动获取新知识、发现新问题的能力。

充分利用在线程序评测系统 教师通过借鉴ACM竞赛的Online Judge系统,开发出一个适合独立学院学生的在线程序评测系统,彻底改变传统的作业模式。教师在该平台上出题时,仿照ACM命题的原则,每个任务都包含题目描述、输入样例和输出样例,并准备好解决问题的标准程序、测试数据和标准答案[6]。教师在上课前将每节课的作业先输入系统中,并设置好本次作业的开始时间和结束时间;学生先自主查看本节课的授课任务和作业,在进入教室的时候就心中有数。

课后,学生在在线程序评测系统上查看、提交作业,该系统就像是一个实时电子裁判,在学生提交完程序代码的那一刻就能给出程序的正确性、运行时间、占用内存资源和输出格式的判断,从而使学生能在第一时间就知道对错,并根据系统给出的评判结果进行必要的修改与提交。在作业时间截止之后,教师查看系统给出的成绩排名,如图1所示。此外,该系统还能对每次的作业完成情况进行记录和分析,如图2所示。

在线程序评测系统的引入,一方面大大减轻了教师批改作业的工作量,彻底改变了传统的作业批改模式;另一方面,学生在肯定自己成绩的同时,也能找出和其他学生之间的差距,从而进一步促进学生的发展,提高了教学质量。

优化现有考核方式 教改中实行新的考核制度,将C++课程最终的综合成绩确定为:平时成绩×20%+期末试卷成绩×40%+实验成绩×40%。平时成绩主要考查学生的作业情况、出勤记录和学习态度;期末试卷主要侧重于语法概念的理解能力、读程序能力和程序分析能力的考查;上机实验考试则是利用在线程序评测系统考查学生的实际编程能力,时间限定在90分钟以内,要求学生当场完成。这种综合的考查方式可以公平、全面地反映出学生对C++课程的真实掌握情况。

4 总结

诚然,由于教学目的、教学内容及学生情况等因素千差万别,没有哪一种教学模式或教学方法是一劳永逸的。路漫漫其修远兮,对C++课程进行教学改革工作仍然任重而道远,今后将不断寻求适合独立学院学生的教学模式和教学方法,以获得最佳的教学效果。■

参考文献

[1]武永成.应用型本科院校计算机专业C++教学改革研究[J].教育教学论坛,2015(25):138-139.

[2]杜卿,陈天.高级语言程序设计(C++)教学改革实践与思考[J].中国校外教育:理论,2008(11):173-174.

[3]吴乃陵.面向对象C++程序设计教学改革[J].电气电子教学学报,2003(2):9-11,43.

[4]盍叮邹超伟,毛韶阳.应用型本科院校C++课程教学改革探索[J].计算机教育,2014(21):95-97.

[5]周立章.基于CDIO工程教学模式的C++程序设计教学改革探索[J].大众科技,2011(10):208-210.

[6]朱月秀.基于ACM竞赛的C++程序设计课程教学改革[J].闽南师范大学学报:自然科学版,2012(1):96-99.

上一篇:农村公共服务绩效评价方法创新研究 下一篇:我国专利执行保险若干问题探究