APP下载

空间信息与数字技术专业的C++课程建设

2011-12-31袁小华王令群何世钧

计算机教育 2011年23期

  文章编号:1672-5913(2011)23-0044-04 中图分类号:G642 文献标识码:A
  
  摘 要:C++程序设计是我校空间信息与数字技术新专业的重要基础课程。近年来,根据专业知识体系要求,我们对该专业C++课程教学进行了系统建设。本文介绍了C++课程建设的相关结果,包括课程教学与实践教学的安排、教材的选择、教学方法的探索以及对教学内容中与其他计算机课程的衔接处理等,可为本专业C++课程教学及其他计算机课程建设的开展提供参考。
  关键词:C++教学;课程建设;教学安排;教学方法探索;课程衔接处理
  
  
  空间信息与数字技术专业(数技专业)是我校新建本科专业,开设数学、计算机、地理信息系统和遥感等课程,培养从事空间信息处理和海洋信息系统研发的专业人才。C++课程作为数技专业的基础课程,教学目的是培养学生面向对象的程序设计能力,为后续学习数据结构、算法分析与设计、地理信息系统等课程建立编程基础。
  数技专业属非计算机专业,我校计算机专业已有C++课程教学体系不适合直接用于数技专业的C++教学。近三年来,我专业C++教师基于“以学生为本”的思想,从学生培养目标出发,在梳理C++及相关课程的知识体系并吸取已有C++教学经验的基础上,从课程教学安排、教材及教学环节、教学手段和教学方法以及与其他程序设计语言的衔接处理上,对本专业的C++课程进行了系统建设,为本专业C++课程教学提供了保证。本文介绍本专业在C++课程教学内容安排、教学方法探索和与其他相关课程的衔接等方面的建设结果。
  1 合理安排教学内容
  制定符合专业实际的C++课程教学计划,可为C++教学规定合理的教学框架。我校数技专业是强调计算机教学的非计算机专业,开设的计算机课程包括计算机应用基础、程序设计语言、数据结构、
  
  算法分析与设计和操作系统等。本校计算机专业的程序语言是先开C再开C++。考虑到C++基础部分是C的超集,比C应用更广[1-2],C++高级部分中的面向对象程序设计思想可直接用到C#和Java中[3]。此外,C++还是数据结构、算法分析、操作系统等后续课程的首选实现语言,因此,本专业选择在程序语言中直接开C++,并将其教学目的规定为以C++语法教学为基础,以培养学生面向对象编程能力为重点。
  基于C++教学目的,我校确定数技专业C++教学大纲为贯彻培养学生面向对象编程能力主线,保证数据结构等课程学习必需的基本知识,将表达式、数据类型、控制结构、函数、指针与数组、类与对象、运算符重载、继承、多态和模板等确定为必学内容,教学中以C++语法教学为辅助,将程序设计方法的教学作为重点。
  在教学计划方面,学生修完“计算机应用基础课程”后,在第二学期开设C++(理论课时64学时、实践课时32学时),在第二学期后的小学期中开C++课程设计(32个学时)。
  2 探索有效的教学手段与教学方法
  采用科学有效的教学方法,是完成C++课程教学目标的重要保证。与C、C#和Java相比,C++内容多而抽象,而数技专业学生学习C++之前没有程序语言基础。因此,在C++教学中,需要探索有效的教学手段与方法,重点解决让学生乐于学和易于学的问题。
  2.1 明确C++学习意义
  明确C++的学习意义,可提高学生学习C++的兴趣。我们主要从“C++学习有何用”着手,仔细挑选了由C++语言开发的几款典型软件,在第一节课简单演示这些软件,以此说明C++语言在整个计算机软件开发中的重要地位,触发学生学习愿望。主要介绍的软件包括开发平台Nokia Qt、Visual Studio和VC++;桌面工具Office、Photoshop、K3DSurf和Matlab;数据库系统Sql Server;网络软件IE和Google搜索引擎;C++小游戏GDI动画;行业应用软件“临港城市风暴潮灾害三维展示系统”(由本专业教师参与开发)等。另外,我们还罗列了数技专业与C++密切相关的后续核心课程,包括数据结构、操作系统、算法分析与设计等,说明C++在数技专业课程中不可或缺的基础地位。
  2.2 灵活采用多种教学方法和手段
  学生理解C++的学习意义后,仍可能会因C++的复杂而缺少学习信心。对于解决C++难学的问题,我们从理论与实践教学两方面探索解决方法:始终以学生为教学主体,将对学生面向对象程序设计思维的培养作为教学主线,注重对案例教学[4-7]、启发式教学[4-5]的灵活应用,并督促学生读写程序。
  1) 把握C++教学主线。
  C++语法复杂又细碎。为避免学生被C++语法“海洋”淹没,在教学中,我们把握“面向对象程序设计”这条主线,在C++教学内容处理上,以数据类型与表达式、控制结构、函数、数组与指针为基础,以多态为目标,强化类与对象、继承和多态等重点内容。
  此外,在C++教学中,我们避免引入如矩阵乘积和动态链表等过于复杂和突兀的算法,将其留待学生掌握相关基础知识后,由后续的数据结构、算法分析与设计等课程去处理,以免加重C++的教学难度。
  2) 设计教学案例。
  C++的内容枯燥。灵活应用案例教学法,以鲜活的案例形式呈现C++知识,提高学生学习兴趣,让学生从解决相关计算问题的C++案例程序中熟悉语法,培养他们的程序设计思想。在数技专业近年的教学中,主要应用的案例有以下5个方面。
  程序控制结构案例:九九乘法表和成绩百分制向五分制的转换。
  函数调用案例:求和函数的传值调用,交换函数的引用和指针调用。
  类与对象案例:公民类、学生类、圆和长方形类。
  运算符重载案例:复数的加(+)、乘以(*)和输出(<<)等运算符的重载。
  继承与多态案例:公民类和学生类、图形shape类与圆类、长方形类和铜钱类等。
  让学生理解各个案例所蕴含的设计思想和知识,辅以相应练习,让学生模仿编程。
  (1) 运用启发式教学。
  C++是一门应用性强的课程。相比于硬塞知识,让学生理解各个知识点“有什么用”和“如何用”更为重要。因此,在本专业C++教学中,教师运用启发式教学,注重让学生思考两个问题:某个C++知识有什么用,以及某问题能用C++的什么知识来解决。在启发学生思考后,才引出知识点,加深学生印象。比如,在开始函数一章时,我们用交换10对整形变量的重复交换代码,启发学生思考有没有更节约代码输入的方法,以此引出函数的概念;在开始数组一章时,我们用多个单变量存储本班全部同学(40人以上)成绩的程序,启发学生思考有没有更节约标识符的方法,以此引出数组的概念。这样,从解决实际问题出发引出C++知识点,避免了直接讲解抽象的C++概念。
  在讲解典型案例时,充分利用板书。先启发学生思考案例中计算问题的解决方法和步骤,将结果总结在黑板上,然后与学生一起讨论,在黑板上将各步骤翻译成C++代码,分析代码用到的新知识点,带领学生一起完成分析问题、算法设计和代码编写过程,并让学生在练习代码编写时去模仿,这样比用PPT直接展示代码效果更好。
  (2) 督促学生读写程序。
  C++课程也是一门实践性强的课程。学生往往苦于课上明白,课下不能写。因此,必须加强学生的实践练习,让其由不会到会,并孰能生巧。对此,我们一方面布置学生课后读典型案例的代码,另一方面,将代码书写与上机调试有机结合:针对每章的核心知识设置编程题目,要求学生先在课后书写代码,再在实验课上调试并记录代码的改正步骤,以提交手写代码和调试记录作为实验考核的依据,从而督促学生多动手,实现教与学相辅相成。
  
  理论课程结束后,我们在暑假前的小学期中安排了C++课程设计,目的是让学生在分组完成小型C++课程设计题目的过程中综合应用学习过的C++知识,强化面向对象的程序设计思想,熟悉包括分析问题、总结算法、编写程序和撰写项目报告等在内的程序开发流程,培养学生的动手和协作能力。课程设计期间,教师跟踪进度和答疑。近年来,我们用过的课程设计题目主要和学生的学习实际相关,主要有使用I/O流建立学生信息管理系统、使用类构建选课管理系统、使用类建立学生评优系统、通过聚合和派生构建大学类、使用模板构建复数类等。通过C++课程设计,学生编程能力普遍提高。
  3 选择合适的教材与实验环境
  教材是承载教学的基石,好的C++教材,应该是主线明确、知识点自包含、理论内容清晰简洁、实例新颖贴切,强调学生动手实践。另外,数技专业是直接上C++,应选用包含C++基本语法的教材。在历年C++教学中,本学院采用过谭浩强、钱能、任哲、刘怀亮等人的教材,前二者适合课时量大的重点高校,任哲教材侧重理论。刘怀亮教材包含了C++基本语法和面向对象两部分,理论简洁,实例紧扣知识点,章节练习构思巧妙,使用下来效果较好,适合于本专业C++教学。
  在C++实验环境方面,我们选用Visual Studio 2008,该平台时下流行,使用方便,后续还将在C#可视化程序设计和Asp.net 网络程序设计选修课中用到。另外,我们还向学生简单介绍C++开发框架Qt,该框架将在后续地理信息系统和计算机图形学与虚拟现实等课程中用到。
  4 处理好与其他计算机课程的衔接
  C++课程为其他计算机核心课程提供重要支撑。为方便学生后续计算机课程的学习,我们对C++与相关课程的衔接进行了处理。
  首先,C++是数据结构、地理信息系统、计算机图形学和虚拟现实技术等课程的基础。因此,在C++教学中,除了强调面向对象编程思想外,内容上还尽量包含相关课程所必需的基础知识。比如:在C++中强调数据结构(C++版)中用到的位运算、指针、数组、抽象类和模板;分析地理信息系统、计算机图形学、虚拟现实技术的教学内容后,我们发现在C++中必须包含向量(vector),而且需介绍三门课程将用到的C++开发框架Qt。
  此外,考虑到将来在参与海量数据分析与计算中,数技专业学生还可能用C和 Matlab进行计算,而本专业未开设这两门课,因此在C++课程理论教学结束后,我们还用4课时简单介绍了C和Matlab的语法特点、程序结构、编译环境及与C++之间的程序转换和链接方法,让学生初步了解如何进一步学习和应用C与Matlab。
  5 结论
  数技专业是对计算机要求较高的非计算机专业。我们从专业特色出发,对C++课程进行了建设:先明确了C++是该专业计算机课程的前导课程,确定了C++的教学目的,合理地规划了本专业C++知识结构、教学大纲和教学计划;然后针对本专业学生,直接学习C++的困难,对C++教学方法进行了探索,对案例教学法和启发式教学法进行了灵活应用,对适合的教材和实验环境进行了遴选;另外,考虑与相关专业课程的衔接和方便学生从事计算工作,我们在教学内容上对有关知识进行了强调和包含。经过C++课程的系统建设,我们保证近年来数技专业C++教学的有效开展,教学效果也较良好。
  
  参考文献:
  [1] 谢娟英. 大学计算机专业C与C++程序设计语言开设探讨[J]. 计算