C++程序设计课程研究与教材建设

时间:2022-06-25 10:27:36

C++程序设计课程研究与教材建设

摘要:文章简要介绍了C++语言及课程的特点,分析国内高校C++课程的教材建设现状,针对C++课程的特点,结合南通大学C++课程的建设、教学研究、教学实践和教学理念,以学生的认识规律和编程能力的形成规律为依据,以培养学生实际编程能力和创新能力为目标,阐述C++系列教材建设历程和建设成果。

关键词:C++;课程研究;教材建设;负反馈教学

1C++教材建设现状

C++语言是兼容C语言的面向对象程序设计语言,随着软件工程技术和面向对象程序设计技术的发展,迅速成为主流的面向过程和面向对象的程序设计语言,是编写系统软件和应用软件的通用语言,也是各类高校,尤其是理工类和综合性高校开设高级语言程序设计课程的首选教学语言之一,同时也是非计算机专业计算机等级考试和计算机专业程序员水平与资格考试指定语种之一,其影响广泛而深远。C++程序设计课程(以下简称C++课程)也因此成为国内外高校普遍开设的计算机基础课程。它不仅是一门程序设计课程,而且是许多专业课程(如数据结构、操作系统、微机原理,单片机及应用)的重要基础,更是这些专业开展计算机研究、应用和综合运用本专业知识的重要表达工具和开发工具。它的基础性、普遍性和重要性逐步为人认识和重视。国外高校比较重视该课程建设,从原版影印教材可见一斑。国内高校讲授该课程较晚,课程建设也较晚,现有教材状况可分下列几类。

1) 英文影印版。主要用于高校图书馆馆藏、教学参考和高校双语教学试点,如高等教育出版社影印出版的《The C++ Programming Language》(BjarneStroustrup著)和《Programming in C++》(Nell Dale,Chip Weems和Mark Headington著)。由于国外高校课程体系与国内高校有较大差别,且国外高校的教学课程通常只指定教学参考书而不指定教材,因此,若把这些教学参考书当教材使用,必然使主讲教师所讲内容与所选教材吻合度较差,很难发挥教材应有的作用。

2) 英文编著版。这类教材是指由高校主讲教师依据本校双语教学试点要求和/或合作办学要求自编,目前尚处于探索阶段。

3) 编译版。这类教材是指引进国外经典C++教材,翻译成中文,在国内销售的教材,如Harvey M.Deitel, Paul James Deitel编著的《C++ How to Program》分别由清华大学出版社出版(名为《C++程序设计教程》,施平安译)及电子工业出版社出版(名为《C++大学教程》,邱仲潘等译)。由于翻译质量、阅读习惯、价格、教材配套、课程体系等方面的问题,通常用作教学参考和图书馆馆藏,很少用作教材。

4) 中文编著版。这类教材量大面广,通常由高校主讲教师(如南京理工大学张岳新,浙江工业大学钱能,清华大学郑莉,西安交通大学罗建军,华南理工大学周霭如,北京大学吕凤翥等)结合本校实际编写。编写思路多,如有的以算法为主、有的以语法为主、有的先讲面向过程程序设计后讲面向对象程序设计、有的自始至终贯彻面向对象程序设计思想,还有的参照国外教材的编排体系等。但上述教材或多或少存在一些不足,如起点高、跨度大、系统性不强、急于阐述C++的新进展等,对实验、学习、课程设计指导等重视不够,不一定满足其他学校的教学要求。

2C++教材建设思路

C++课程是各类高校普遍开设的计算机核心基础课程,应用广、影响大。与欧美发达国家高校相比,我国高校生平均教学资源占有率严重偏低,尤其是可用的C++课程教学参考资料较少,因此,教材在我国既是知识的载体,又是教学的工具,对保障教学质量显得格外重要。与传统教材相比,C++课程教材的内容广,理论性、实践性和综合性强,更新速度快,成熟意味着过时,教材作者新人辈出,教材种类多、更新快、问题也多。因此,C++课程教材改革与建设有其自身的显著特点。

C++课程理论教学和实验教学并重,学以致用,以通过编程解决实际问题为目标;课程内容涉及基本语法、基本算法、基本数据结构、编程思想、编程技巧和程序调试技术等,综合性、实践性强,理论与实践结合紧密;实验编程环境极其严格,结果要求百分之百正确,对培养大学生编程能力、创新能力和严谨的科学作风有非常重要的作用。

好的C++程序设计教材首先应以长期持续的课程建设为依托,以坚实的教学研究和教学实践为基础,体现课程建设成果;其次应结合自身实际,分析研究C++课程的目标、特点、内容、结构及与其他课程的关系,在教材的编写思路、框架结构和教学内容的组织、取舍、阐述、更新、难点处理等诸多方面有所改进和创新,注重学生实际编程能力培养和创新能力培养;再次应符合读者的认识规律和编程能力的形成规律,既便于自学和教学,又利于教学效果的巩固和教学质量的提高;最后还应有必要的优质的配套教学资源。

3C++课程建设历程

我校于1998年在计算机专业首先开设C++课程,2000年扩展到电子信息工程、电子科学与技术、通信工程、电气工程、自动化、信息计算、信息系统与信息管理等非计算机专业。目前课程规模年均近2000人。

基于C++课程的基础性和重要性,2000年在校教务部门和院领导的指导和支持下,专门成立了以具有丰富教学经验和实际编程经验的教师为主体的C++教学研究小组(以下简称教研组),并设立课程负责人,使课程的教学、研究、建设和管理步入持续不断的良性发展轨道。

十多年来,教研组结合我校实际,对C++课程的特点、内容、结构、方法及与其他课程的关系等方面做了大量研究工作,以提高教学质量为首要目标,改进教学方法,形成了一整套针对该课程实际的教学理论和教学方法,即C++课程负反馈教学法,并编写了大量具有负反馈教学法特色的教学材料,采取了一系列的教改措施,使该课程的教学质量得到明显的提高,为本课程的精品化建设奠定了坚实基础。

3.1积极稳妥推进教学方法改革,形成颇具特色的负反馈教学法[1-3]

课题组根据多年教学研究与实践,在教育学和心理学的基础上,用现代过程控制理论分析传统教学过程,于2002年建立负反馈教学模型(如图1所示)。由于模型引入了负反馈环节,从理论上可以确保教学质量的稳定。在负反馈教学模型基础上,吸收单元教学法、布鲁纳的“发现教学法”和瓦根舍因的“范例教学法”的合理成分,形成负反馈教学法,在我校C++课程教学实践中,取得了较好的教学效果。

负反馈教学法的原理是从教学过程中反馈(作业、实验、答疑、单元测验等)的问题入手,通过及时讲评,解决学生学习中存在的各种问题,以达到预期的教学目标。由于反馈的是教学过程中存在的问题,故称此方法为负反馈教学法。负反馈教学法包括以下4个主要方面。

1) 教学内容单元化组织。

按程序设计方法演进发展的自然顺序及C++实际编程能力形成的3个关键期,即结构化程序设计模块程序设计面向对象程序设计,将C++教学内容组织为3个单元,有利于教学的组织、实施、考核,有利于教学效果的巩固和教学质量的提高。

2) 用“范例”组织课堂教学,贯彻“发现式”教学思想,注重学生创新素质和优秀人才的培养。

范例教学法由教育学家瓦根舍因(M.Wagenshein)提出,教师通过范例辅助学生理解、掌握知识和原理,其目的是让学生能够独立地获得判断能力、推理能力、认识能力和继续学习的能力。以往,程序设计课程教学通常以一门具体语言为主线,围绕语法知识展开。而实质上,设计程序是为了解决实际问题,是一种缜密思维方式、创新素质和综合能力的培养,要使学生对程序设计有兴趣,必须使他们亲自感受并体验程序设计的无限魅力。为此,我们改用范例组织本课程的课堂教学。在多媒体教学设备和真实编程环境的支持下,课堂教学以程序(范例)为主线。所选范例程序具有典型性、综合性和可扩展性,涉及基本语法、基本算法和基本调试技术。范例程序的讲解首先符合“现象发现问题分析问题解决问题验证”的探索过程,使学生掌握基本语法、算法及应用;其次,通过对范例程序的启发式扩展,揭示程序由小到大、由简单到复杂直到实用的过程,激发学生的探索热情和兴趣,使学生掌握知识间的联系和编程的工程化思想,获得实际编程能力。

3) 采集教学负反馈信息,做好分类、分析和讲评,注重学生整体水平。

按负反馈教学法要求,任课教师做好作业和实验报告抽样批改、单元测验的全样批改,重视实验指导和答疑。在获取足够的负反馈信息后,任课教师及时做好问题的分类、分析和讲评,以保证学生整体水平的提高。

4) 根据大班教学特点,推进强同步教学策略,确保整体效果。

大班教学成功的关键在于保持教学的师生同步状态。负反馈教学法的师生同步措施有:授课、作业、实验、讲评和测验。其中,作业与实验报告同步效果欠佳,其原因是大班教学学生抄袭现象较为普遍,因此,作业与实验报告为弱同步措施;授课、讲评与测验同步效果较好,为强同步措施。为使大班教学取得较好的效果,采用强同步措施是必要的。我们在每个单元结束时安排一次测验,以实现师生的强同步,及时取得真实的负反馈信息。

由于采用负反馈教学法,所以课堂教学可以突出重点和难点,而将易于自学的内容只做要求不做讲解,这样,一方面解决了课时少与内容多、难点多的矛盾,另一方面也提高了学生的自学能力和自我解决问题的能力。

3.2强化实践教学,注重培养学生的实际编程能力和创新能力[1-3]

C++课程难点多、综合性,主要涉及基本语法、基本算法、基本操作及综合应用等方面内容。

实验是本课程至关重要的环节,学生只有通过实验才能检验自己是否真正掌握和运用该语言:通过上机调试程序,会发现很多想不到的问题;通过解决这些问题,可以加深对语言和算法的理解、提高程序调试能力、实际编程能力和创新能力。为此,本课程设有课内实验和课程设计实践教学环节。

1) 课内实验注重培养学生基本调试能力和基本编程能力。

基本调试能力是学生通过深入学习取得实际编程能力的前提,常被人忽视。因此,我们根据教学内容编写了一套以调试技术、基本语法、基本算法、综合编程为核心内容的同步实验指导,共拟定了17个实验,每个实验通常包括调试题、编程题和选做题,可供不同层次的学生选用。

2) 课程设计注重培养学生综合编程能力。

C++课程设计以综合性程序设计训练为主,选题具有典型性、综合性和示范性,突出难点及其实用价值,使学生体会到难点不难,而且感到难点在实际编程中非常有用。学生通过训练进一步巩固和掌握基本语法、基本算法和基本调试技术,养成良好程序设计风格(模块化、结构化)和严谨的科学作风,初步形成软件工程化思想,并具有一定的程序组织能力。

C++课程设计的内容包括基本算法和数据结构的综合运用。其中,基本算法涉及穷举、迭代、递推、递归、排序和查找等,数据结构涉及数组、结构、指针、动态内存分配、单向链表、类、文件等。

3) 强化实践教学辅导和考核,确保实践教学质量。

实践环节实行教师辅导、答疑和考核。课内实验实践环节主要涉及预习情况检查、辅导情况记录、实验报告批阅和典型问题讲评,课程设计实践环节主要涉及预习情况检查、辅导情况记录、联机考核和课程设计报告批阅。对于课程设计考核,每位学生的联机考核时间约5~10分钟,考核内容包括讲解和演示自编程序,回答老师提问(3~5个)。通过采取上述措施,实践教学质量得到充分保障。

4) 及时总结和推广实践教学经验。

根据教师多年的实际编程经验和教学经验,编印典型问题和综合问题编程专题,供学生课外阅读参考,便于学生突破难点,融会贯通,体验综合编程的乐趣,培养他们分析和解决问题的能力。

3.3积极开展教学内容研究,及时更新教学内容

根据程序设计课程本身发展快、更新快、综合性强、存在问题多的特点,针对同类教材中普遍存在的问题和不足,积极开展教学内容的研究,确保教学内容的正确性和系统性,确保将重点难点内容讲清讲透,先后发表教学内容研究论文20多篇。代表性论文有:C++运算符重载教学和编程中易被忽视的问题、C++语言引用型变量的实现机制浅析、C/C++语言可变参数函数的参数传递机制剖析、C/C++中数组与指针的关系、C++中二维数组与指针关系的深入剖析、C++迭代器机制剖析、C++标准模板库与代码重用。

4C++教材建设成果

教研组根据对国内外流行C++教材的研究分析和试用,结合我校非计算机专业计算机基础教学改革、计算机专业教学改革和课程建设的实际,积极稳妥地开展体现负反馈教学特色的系列教材的编写和出版工作。

2005年2月,教研组自编教材《Visual C++程序设计习题、实验与编程实践》由华东理工大学出版社出版,同年12月第二次印刷,累计印刷3次,得到了社会读者的认同。2005年10月,我校C++课程获江苏省高等学校精品教材立项建设,在清华大学出版社的支持下,于2007年2月主编出版教材《C++程序设计实践教程》(含教学课件),累计印刷3次;在高等教育出版社的支持下,于2007年11月主编出版教材《C++程序设计教程》(含教学课件)和《C++程序设计实验与编程实践》。

教材的配套建设充分发挥了教材的作用,满足了我校教学需要。其中,《C++程序设计教程》和《C++程序设计实验与编程实践》主要用于我校计算机专业教学,《C++程序设计实践教程》和《Visual C++程序设计习题、实验与编程实践》主要用于我校非计算机专业教学。

下面简要介绍教研组近年主编出版的C++课程系列教材的特点。

4.1 《C++程序设计教程》及其配套教材[4-5]

1) 内容组织结构合理,层次分明。教材按程序设计方法演进发展的自然顺序及C++实际编程能力形成的三个关键期,将C++教学内容分为三大单元,即结构化程序设计(1~4章)模块化程序设计(5~9章)面向对象程序设计(10~14章)。内容组织由浅入深,循序渐进,符合读者的认识规律和编程能力的形成规律,便于教学的组织、实施和考核,利于教学效果的巩固和教学质量的提高。

2) 紧跟标准,内容求新。本书介绍的是标准C++,符合ANSI/ISO C++标准(包括1998第一版和2003第二版),引导读者按C++标准编写程序。本书对以往教材中带有一定普遍性的问题如“指针就是地址,地址就是指针”等进行了澄清和纠正。

3) 不避难点,力求突破。许多有一定基础的读者学习程序设计半途而废的重要原因之一是未能突破实际编程中的难点问题,这与不少主流教材以各种理由极力回避难点有密切的关系。本书针对教学和实际编程中的难点(如递归、指针、动态内存分配、虚函数等),精挑多选范例程序,想方设法讲清讲透,力求使读者突破难点,学以致用,不致半途而废。

4) 范例程序,精心设计。程序是语法、算法、思想和方法有机结合的载体,是计算机解决实际问题的钥匙,学习程序设计离不开程序。书中大量的范例程序是经过作者精心挑选和精心设计的,表达准确、简练,书写规范,示范性强。

配套教材《C++程序设计实验与编程实践》分三部分:

1) 实验指导。实验与课堂教学同步进行,是本课程至关重要的环节。共20个实验,每个实验通常包括调试题、编程题和选做题,供不同层次读者选用。

2) 典型问题和综合问题编程。列举实际编程中提炼的典型和综合问题的编程范例,突出难点及其实用价值,使读者体会到难点不难,难点在实际编程中非常有用。所列范例程序涉及程序的结构化书写格式、程序由小到大、由简单到复杂直到实用的过程。

3)Visual C++ 6.0程序调试技术。这部分内容帮助读者熟练掌握主流的C++开发环境Visual C++ 6.0的程序调试技术,使他们具备主动上机调试程序的能力。

4.3 《C++程序设计实践教程》[6]

1) 内容组织原则与4.2一致。

2) 内容取舍上,根据阅读对象为高校理工类专业的一年级新生的实际,注重基础和系统,兼顾提高。内容包括:结构化程序设计基础(C++概述、数据类型、运算符、表达式、简单的输入输出、算法及其表示、流程控制)、模块化程序设计(函数、编译预处理、数组、结构体、共用体、枚举类型、指针和引用)和面向对象程序设计(类、对象、继承、派生、友元、虚函数、运算符重载、I/O流类库、模板、异常处理、命名空间等)。

3) 编写思路上,通过以基本语法和基本算法为主线的典型、综合范例程序,适时阐述有关程序设计的思想、方法和技巧,将C++语法、基本算法和程序设计方法有机结合起来,理论联系实际,注重学生实际编程能力培养。

4) 内容阐述上,注重概念准确、由浅入深、循序渐进、图文并茂、简明扼要、举一反三、用例精练,便于教学和自学。范例程序表达简洁,书写规范,示范性强。

5) 难点处理上,不回避教学和实际编程中的难点,并适时提出扩展性问题,激发学生的探索热情和兴趣,利于创新人才培养。

6) 内容的更新上,及时反映C++程序设计课程的教学研究成果,对以往教材中带有一定普遍性的问题如“引用型变量不占内存”等进行了澄清和纠正。

7) 配套的教学资源上,丰富、实用,包括实验与编程指导、学习指导、课程设计指导、电子教案、试卷库和课程网站等。

8) 教学的试点上,校内试用多年,几经调整,起点低,教学效果好。

4.4 《Visual C++程序设计习题、实验与编程实践》[7]

1) 学习指导。根据非计算机专业计算机等级考试要求,按章编排了相应具有较强启发性的典型例题和习题。为取得较好学习效果,按C++实际编程能力形成的三个关键期,共设置了三个单元测验。单元测验的内容突出重点和难点以及综合运用,目的是及时发现并解决教学中存在的问题。

2) 实验指导。共有17个实验,每个实验包含调试技术介绍、程序调试题、程序设计题和选做题,注重培养学生的编程能力和调试能力,强化其实际编程能力训练,激发其编程兴趣。

3) 典型问题和综合问题编程。共8个专题,便于学生突破难点,融会贯通,体验综合编程的乐趣,培养他们分析和解决问题的能力。

4) 二级考试模拟试卷。

5)VC++ 6.0程序调试技术,包括使用VC++ 6.0 IDE编写和调试程序的方法和技巧。

5结语

十多年来,教研组围绕C++课程,潜心教学、研究、建设和积累,形成了颇具特色的负反馈教学法,发表相关教学论文20多篇,出版教材4部,建成1门省级精品课程(《Visual C++程序设计》)、1部省级精品教材(《C++程序设计教程》)和1个校级优秀教学团队,取得中国交通教育研究会2007-2009年度优秀成果一等奖(《C++程序设计实践教程》)1项,获得第十届“挑战杯”全国大学生课外科技作品竞赛全国二等奖等5项省级以上奖励。

精品教材建设是一个长期过程,我们将继续沿着自底向上的建设路径,及时总结C++教材建设的经验,认真做好特色系列教材的编写、重印、修订、再版和配套建设,进一步提升教材建设的层次,不断扩大C++教材在校内、省内和国内的受益面。

参考文献:

[1] 陈建平,刘维富,王春明,等. Visual C++程序设计课程建设研究与实践[J]. 计算机教育,2007(12):18-20.

[2] 刘维富,陈建平,王春明,等. 浅谈“C++程序设计”课程的建设与实践[C]//大学计算机课程报告论坛组委会. 大学计算机课程报告论坛论文集2006. 北京:高等教育出版社,2007:92-97.

[3] 顾晖,刘维富,管致锦,等. 负反馈教学法的原理与实践[J]. 电气电子教学学报,2004(4):102-104.

[4] 陈建平,刘维富,葛建芳. C++程序设计教程[M]. 北京:高等教育出版社,2007:前言.

[5] 刘维富,葛建芳. C++程序设计实验与编程实践[M]. 北京:高等教育出版社,2007:前言

[6] 刘维富,陈建平,葛建芳,等. C++程序设计实践教程[M]. 北京:清华大学出版社,2007:前言.

[7] 刘维富,丁卫平,沈学华,等. Visual C++程序设计习题、实验与编程实践[M]. 上海:华东理工大学出版社,2005:前言.

C++ Programming Course Research and Textbook Construction

LIU Wei-fu, CHEN Jian-ping, WANG Chun-ming, GE Jian-fang, QIU Jian-lin, GU Hui

(Computer School of Science and Technology, Nantong University, Nantong 226019, China )

Abstract: Firstly, this paper simply introduces the characteristics of C++ language and C++ course, and simply analyzes the textbook constuction’s actuality of domestic university in the C++ course; Secondly, the paper aims at the characteristics of C++ course, combines C++ course’s construction, teaching research, teaching practice and teaching idea, takes the understanding regulation of the student and the formation regulation of the programming ability as a basis, takes developping the student’s actual programming ability and creative ability as a target, elaborates the C++ series textbook’s construction process and construction result.

Key words: C++; course research; textbook construction; negative feedback teaching

上一篇:学习迁移理论在“数字媒体基础”课程教学中的... 下一篇:以Flash为主线的互动媒体专业课程体系建设