高校C++语言课程的教学探讨与实践

2012-04-02 05:08:12董超群
当代教育理论与实践 2012年1期
关键词:程序设计语言课程

董超群

(中国石油大学(华东)信息与控制工程学院,山东青岛266555)

高校C++语言课程的教学探讨与实践

董超群

(中国石油大学(华东)信息与控制工程学院,山东青岛266555)

结合C++语言课程的特点,精心选择教学内容,综合应用各种教学方法和模式,优化组合教学手段,灵活运用各种教学设备和资源,采取由浅入深、循序渐进的方式开展教学工作;不断践行教学改革,强化上机实践教学环节,注重学生能力培养;教学实践表明,较好地完成了教学任务,解决了教学过程中遇到的关键问题,取得了预期的教学改革研究成果,提高了学生利用计算机程序语言解决实际问题的能力,教学效果良好。

C++语言;教学研究;教学实践

C++语言是目前很多高等院校为大一新生开设的计算机程序设计入门语言课程,是学生接触和学习的第一门计算机语言;其主要任务是结合一般数值计算问题和工程实际问题向学生介绍计算机程序设计的基本知识,使学生掌握C++语言的基本内容、程序设计的基本方法和编程技巧,培养学生面向对象程序设计的思想以及对问题的抽象处理能力,提高学生利用计算机分析和解决实际问题的能力,为进一步学习后续专业课程和计算机课程打下基础;作为入门程序语言课程,给教师的教、学生的学以及教学互动活动的顺利开展提出新的挑战。笔者结合课程特点和教学实际,在教学计划制定、教学内容设置、教学手段改进、教学方法研究、教学网站开发、教学改革实践等多方面进行了一系列的教学探讨和实践工作。

一 精选教学内容,优化教学思路

C++语言具有种类繁多的数据类型和复杂多变的语法结构,其功能丰富、设计灵活、兼具过程化程序设计和面向对象程序设计等诸多特点;课程的教学不但要求教师自身具备良好的知识结构和教学水平,也要求学生具有敏捷的思维和灵活的逻辑设计能力,使得其成为一门难教难学的课程。课程内容繁多,教师在教学过程中不能拘泥于细节,在有限的授课学时内不可能也没必要做到面面俱到,必须突出重难点和实用性,教会学生基本的语法概念、设计思想和编程方法,重点从思维和算法上引导学生,使其能正确运用C++语言编写程序。对于C++的数据类型、语法结构、程序流程、数组、指针、引用、类与对象、继承与派生、多态性与虚函数等基础知识应重点讲解,对于数组、指针、继承、多态性等难点内容应反复阐明[1];具体课程内容的讲授和教学任务的实施按照以下四个层次逐层推进。

(一)第一层次,基础编程知识储备

以语言为主线,结合程序片段或简短小程序介绍C++的语言构成及语法规则,使学生学会C++语言的基本使用。注重从语言的系统实现、设计背景及执行环境等多个角度讲授C++的语言成份,使学生知其然并知其所以然。例如在讲述数组与指针的关系时,指出数组名就是该数组的首地址,对某数组a来说,a[i]被编译为*(a+i)进行处理,使学生真正搞清数组越界的本质;在讲述构造函数和析构函数时,指出构造函数用于申请资源、析构函数用于释放资源,让学生深入理解这两个函数的功能和作用。

(二)第二层次,简单小型程序设计

以小型结构化程序的设计与应用为主线,通过实验和作业应用和巩固第一层次的教学成果。实验题目及课后作业的选题合适与否直接关系到本层次教学工作的效果,为此需要教师紧密结合学生的知识结构和兴趣爱好选取他们喜闻乐见的例题。例如结合数学方程ax2+bx+c=0的求解可以训练和巩固比较运算符及选择结构程序编写等多个知识点;结合矩阵转置或冒泡排序可以让学生应用数组和多重循环嵌套;编制个人所得税计算器、超市收款机等实际程序;探索猴子吃桃、斐波拉切数列、九宫图、哥德巴赫猜想等经典问题的求解。通过以上实际数学问题或生活问题的求解和探索,让学生做到寓学于乐、学以致用。

(三)第三层次,复杂应用程序开发

以较为复杂的应用程序开发为主线,引导学生灵活应用C++语言解决有一定难度的实际问题。教师以一些较为复杂的应用问题为牵引,由浅入深地介绍程序设计中的典型算法(如迭代、递归、回溯等),并融合数据结构和程序设计方法等方面的知识,深化学生对C++语言的认识、提高学生解决实际问题的能力。例如对八皇后问题、迷宫问题的探索,使学生了解回溯法的思想及数据结构的设计、领会“分而治之”的程序设计思想。

(四)第四层次,课程设计项目实训

以程序设计实习(课程设计实训)课题的研究与开发为主线,通过为期两周的分组课程设计实训,促进学生应用C++语言编程解决实际问题。为了避免传统课程设计中教师包揽选题和设计思路等因素造成的弊端,采用研究型课程设计方法[2],让学生自主选择力所能及的题目,采用科学研究的方法解决所选择的课题:(1)学生根据自己的兴趣及特长在校园生活、商业科技、交通环保等多种社会生活领域进行选题,小组成员自由组合,教师负责对所选题目的研究意义、可行性及工作量进行审查,选题灵活多样;(2)在整个课题的设计和开发过程中,均以学生为主体,以学生的兴趣为导向,教师以“导师”的身份出现,引导学生参与到实训项目之中,为学生提供技术支持,侧重检查项目完成情况,并适时为学生归纳总结编程技巧和语法知识,即教师只需进行阶段性的把关,充分发挥学生的主动性和创造性;(3)充分考虑研究型课程设计选题的多样性、软件本身的复杂性以及设计过程中一些不可预知的困难因素,最终学习成绩以题目难度、设计方案是否正确可行为主要考核指标,让每个学生都亲自参与并体验整个软件开发过程,注重过程训练,淡化考核结果。通过这种较大规模软件开发的实践,学生不仅可提高软件开发水平和合作能力,还可有意识地将计算机技术应用到各行各业,实现学有所用。

二 改进教学方法,完善教学手段

作为入门语言,课程的教学切忌照本宣科,必须合理编排教学内容、综合应用各种学生容易接受的教学方法和教学模式,优化组合教学手段、灵活运用各种教学设备和教学资源,采取由浅入深、循序渐进的方式开展教学活动。

(一)理论联系实际,综合应用各种教学方法

开课伊始需要教师结合学生的知识结构和专业特点,选取实际校园生活、科学数值计算、软件程序开发等领域的典型应用示例说明C++语言的作用和功能,让学生对课程产生兴趣,改变学生对课程的错误认识和理解,打消学生的畏难情绪和厌学思想。具体授课过程中,教师精心编排教学内容、合理安排授课时间:(1)对于很简单的基础知识,提前要求学生预习和自学,课堂上一带而过;(2)对于课程的重点知识,教师重点讲解和说明,并在实验和作业中反复练习;(3)对于抽象难懂的难点内容,有意将其分散,以缩小台阶,循序渐进。综合应用实例教学法、问题教学法和任务驱动法教学法,开展启发式、引导式、互动式和项目驱动式教学。

第一,采用生动形象的比喻阐释抽象的概念。C++中很多概念对于初学者而言,显得抽象而深奥,教师如果能在讲课中适当地运用形象生动的比喻,常常会使许多看似深奥的概念变得浅显易懂。课堂上采用通俗易懂的大白话、运用恰当的比喻可以促进学生对抽象概念的理解,激发其学习兴趣、增强其学习自信心。

第二,采用启发引导教学法引入新的知识点。心理学家认为学生从事新的有意义的学习时必须有适于新知识的原有认知结构,学生的学习是一个同化自身认知结构的过程。因此在讲授新的知识时,教师宜采用启发引导的方式,通过回顾以前讲授过的相关内容,设置新的疑问,引导学生在思考问题、解决问题的过程中自然而然、不知不觉地接受新知识、吸收新思想。

第三,采用实例教学法,密切联系实际,寓语法知识于实例中。部分教材上的示例程序纯粹是为了说明语法概念和语法规则而编写的,没有实用价值,让人读来枯燥无味,因而有必要采用一些解决实际问题的实例,让学生体会到学有所用,激发其学习动力。摒除以往以教材为中心的传统教学模式,以精选的实例程序为中心,把学习重点放在具体实例的讲述上,把枯燥机械的语法规则融入到具体实例中,让学生在应用中学习。

第四,采用问题教学法,设置疑问引导学生思考和探索。问题是最好的老师,没有问题就没有深入。问题教学法通过提出问题、分析问题、讨论问题、解决问题等环节让学生更深入的开展学习,激发其学习主动性。

第五,采用任务驱动教学法开展项目驱动式教学。将教学内容设计成一个或多个具体的项目,以解决学生熟悉的现实问题为导向,引导学生学习知识:(1)以一个个项目为主线展开教学,把相关知识点融入到项目的各个环节之中,通过对问题的深化或功能扩充来拓宽知识的深度和广度,直至得到完整的项目解决方案;(2)让学生带着任务学习,学习目的明确,让学生感到学的知识有用、学的知识能解决实际问题;(3)可以极大地调动学生的积极性,学生在完成一个与他们实际生活或学习密切相关且有趣的项目时,他们会专心致志、乐此不疲;(4)创设任务情景,使枯燥、困难的编程趣味化,活跃课堂气氛、寓学于乐。

(二)优化教学手段,灵活运用各种教学资源

在教学实践过程中教师需要与时俱进、精心准备,结合课程特点和教学内容合理应用现代化的教学手段和教学资源。

第一,发挥多媒体教学的优势,提高课程教学质量。结合课程内容,教师有选择地使用多媒体教学,给学生营造良好的学习环境。多媒体教学能同时运用文字、图形、图像、声音、动画等信息对学生进行综合刺激,能以超文本、超链接的方式组织、管理教学材料,具有形象、直观、生动、交互性好、信息量大、节省课时等诸多特点。对于一些抽象的、学生难以理解和接受的内容,运用多媒体可以进行直观展示和动态模拟,激发学生的学习热情和兴趣、引发学生的想象力和创造力,加深其对问题的理解,从而提高教学效率和教学质量。

第二,开发互动网络教学平台,拓宽学生学习途径。平台集教学大纲、教案课件、课后作业、上机指导、知识自测、课程题库等多种资源于一体,可实现资源下载、网络答疑、师生论坛等系统功能,给学生提供集成化的学习环境,是教师和学生、学生和学生之间的交流平台。网络教学平台的应用,可以有效克服教材内容的单一性和封闭性,利用网上资源推动开放式、发现式、创新式学习。

三 践行教学改革,提高教学质量

教学工作是一个需要不断实践、摸索、改进和完善的系统工程,需要教师积极地参与教学改革与实践,不断的完善教学内容、优化教学思路、改进教学手段、优化教学方法[3]。笔者在长期的教学实践和改革过程中,完成了一系列教学探讨和研究工作、解决了课程教学过程中的关键问题、取得了预期的教学改革研究成果。

(一)开发互动网络教学平台,改进教学手段,精心制作多媒体课件,优化教学方法

网络教学平台以课程教学网站为核心,通过教学资源下载、学习资料搜索、课程题库建设等方式扩充课程内容信息量,扩大了教学广度;通过知识自测、网络答疑、师生论坛等形式拓宽学生的学习途径,加大了学习深度。精心制作了结构严谨、图文并茂、音像俱全、兼顾课堂教学和学生自学的高水平多媒体课件,将一些难以用语言或教具表达的教学内容和资料直观形象的传达给学生,辅助教师讲授重点难点内容,起到了事半功倍的作用和效果。

(二)强化上机实践教学环节,改革考核方式,培养学生的竞争意识,注重能力培养

程序设计是一门实践性很强的课程,学生必须通过上机实践操作才能掌握所学的知识。“The only way to learn a new programming language is by writing programs in it”,只有保证了实践教学环节的教学质量,才能真正提高学生的上机动手能力和编程调试能力。为此需要教师认真准备、精选实验内容;重点让学生自己动手编程,对学生的问题,采用提示或启发方式给予解答。改革考核方式,课程的最终成绩由平时成绩、实验课成绩、笔试成绩和上机考试成绩共同决定,主要考核学生对基础知识、基本概念的掌握和编写程序、调试程序的能力。教学中后期组织学生进行程序设计大赛,培养学生的协作意识、竞争意识和创新意识。

四结 论

教学实践表明,通过不断的教学实践与改革,较好的完成了教学任务、解决了教学过程中遇到的关键问题、取得了一系列教学改革研究成果,培养了学生面向对象程序设计的思想,提高了学生利用计算机分析和解决实际问题的能力,为进一步学习后续计算机课程或专业课程打下了很好的计算机语言基础,教学效果良好。

[1]谭浩强.C++程序设计[M].北京:清华大学出版社,2004.

[2]李海文.研究型学习在程序设计实践课程中的尝试[J].电气电子教学学报,2003,25(6):15 -18.

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

G642

A

1674-5884(2012)01-0093-03

2011-11-08

董超群(1978-),男,湖北荆州人,讲师,工学硕士,主要从事信号与信息处理、计算机测控技术、程序设计与软件开发等方面的教学和科研工作。

(责任编校 谢宜辰)

猜你喜欢
程序设计语言课程
数字图像处理课程混合式教学改革与探索
软件设计与开发实践课程探索与实践
计算机教育(2020年5期)2020-07-24 08:53:38
基于Visual Studio Code的C语言程序设计实践教学探索
计算机教育(2020年5期)2020-07-24 08:52:56
语言是刀
文苑(2020年4期)2020-05-30 12:35:30
为什么要学习HAA课程?
从细节入手,谈PLC程序设计技巧
电子制作(2019年9期)2019-05-30 09:42:04
让语言描写摇曳多姿
高职高专院校C语言程序设计教学改革探索
累积动态分析下的同声传译语言压缩
我有我语言