物联网工程专业C++程序设计教学改革探索
2014-05-04赵晋陵
赵晋陵
摘要:针对传统c++程序设计与学科专业特点脱节的现象,重点讨论c++程序设计在遥感影像处理中的教学特点,提出从教学方法、教学内容和实践环节3个方面革新现有物联网工程专业c++课程教学体系,对提高课程的教学效果具有重要的指导和借鉴意义。
关键词:物联网工程;遥感影像处理;教学改革;c++程序设计
1、背景
物联网(The Intemet ofThings)作为21世纪我国战略性新兴产业,有着广阔的应用领域和巨大的市场需求。《物联网“十二五”发展规划》圈定9大领域重点示范工程,包括智能工业、智能农业、智能物流、智能交通、智能电网、智能环保、智能安防、智能医疗、智能家居。作为培养物联网应用技术专业人才的学科,物联网工程专业在20:10年被教育部批准成立。物联网涉及的研究与应用领域非常广泛,如何在高校的教学实践环节中设置与高校特色相匹配的课程体系,成为我们必须考虑的首要问题。作为智慧地球应用可持续发展的技术保障,GNSS(GlobalNavigation Satellite System,卫星导航,地理信息,遥感)与物联网结合被用于多个专业领域。
遥感信息技术是空间信息科学技术的重要组成部分,也是物联网应用中的重要组成部分。近年来,随着空间技术、大测绘技术、计算机技术、软件技术、信息技术、数字图像处理技术等相关领域的进展,遥感技术得到了快速发展,全国众多高校先后开设了与遥感相关的专业和课程。在图像处理方面,由于C++代码执行效率高,有着丰富的类库可供程序直接调用,被广泛用于物联网工程的应用研究中。此外,VC++提供了各种功能强大的开发向导,使之成为遥感图像预处理、色彩增强和专题地类解译的最佳选择。图1所示为基于c++程序设计的遥感影像处理流程。众多科技工作者已经采用C++或VC与其他编程语言混合的模式开展遥感信息提取、影像处理等研究工作。针对传统c++语言的教学与改革,有教育工作者作了相应的研究,并对非计算机专业的C++教学工作进行了探索。然而,针对物联网工程专业中的遥感信息处理,如何将C++课程教学与本专业的应用领域相结合成为亟须解决的问题。
2、教学方法革新
良好的教学方法是提高教学质量的重要保障。传统的c++教学中,教师侧重于讲授,而学生则被动接受。当整个课程结束时,虽然教师已讲授了所有要点和关键点,但学生掌握的只是大量的离散知识点,无法系统学习到课程的体系结构和精髓,更不会自如地应用c++去解决实际问题。同时,学生对为什么要学习编程技术,学完有什么用并不明确,导致学习的主动性不高。因此,革新传统教学方法是提高本课程教学效果的前提。
2.1 编程兴趣培养
在遥感影像的处理和分析过程中,有许多现成的应用软件可供选择,如著名的ERDAS、ENVI、PCI、ArcGIS等。学生在实际操作这些软件时,只是选取特定的集成模块,输入规定的参数后便可得到最终的处理结果,且容易被每一次影像处理后的效果所吸引,但并不明白具体的处理细节如何实现。教师可以根据学生普遍感兴趣的操作模块,选择其中有代表性的应用案例,讲明c++关键程序原理和具体实现流程,让学生自己动手去编程实现;并说明这些功能模块并不是最优,尚有很多改进空间,以此激发学生自己研究算法并编程实现。最终,让学生明白所学专业和编程语言之间的紧密关系,增强专业兴趣和编程兴趣,增加学习的积极性和主动性。
2.2 互动教学方法
现阶段,各高校都已经实现了多媒体辅助教学。教师通过PPT将所讲授内容展示给学生,节约了大量板书时间,提高了工作效率,增加了单位课时的信息量。但是,编程是一门循序渐进的课程,C++语言从语法上有对C语言的继承,但也有大量的变化。这些变化的部分可以通过PPT直观展现给学生,但要加深印象效果却不佳。在一些市场化的计算机软件培训中,培训师采取的是动手演示操作过程,让学员跟着模仿操作,进而学会实际操作步骤,加深流程的实现环节。同理,可以将这种教学方法引入到课堂教学中。教师讲授完一个知识点后,不要直接用PPT显示一个完整的实例程序段,而是直接打开c++编程环境,手工输入这个程序段,一边输入一边解释每一个变量是怎么定义的,每一个程序片段要实现哪些功能,其中涉及哪些语法和变量;最后,显示编程效果,验证程序段的可靠性。在整个互动的教学过程中,学生直观看到了一段程序的实现过程,理解了输入参数、运算过程和输出结果的相互关系,会加深其记忆和理解。同时,采用互动的方式,挑选学生到讲台上实现一个编程过程,并在敲打代码的时候给台下的学生讲解,加深知识点的掌握和记忆。经过这个锻炼过程,学生在编程时会不由自主地模仿编程细节,达到灵活掌握相应知识点,养成良好编程习惯的目的。
2.3 理论联系实际
传统教学中,受限于学时、教学条件等因素,教师无法将每一个知识点都与实际应用相联系,而是中规中矩地讲授语法知识,导致学生学完所有知识点后,不能将其组合起来实现一些基本功能,更别说解决复杂的实际问题。学习编程的目的是为了解决实际问题,而这种讲授方式显然违背了编程语言学习的初衷。因此,教师在讲解每一个知识点的过程中,应该与专业背景和实际应用联系起来。比如:对矩阵的处理是c++语言的一项基本操作,而遥感影像的数字化存储采取的就是矩阵存储方式;还有指针的操作,对影像数据的颜色操作就有基于指针的检索。通过这种理论联系实际的教学方式,学生自然而然就将所学的C++语言知识点与本专业知识联系起来,对提高编程水平和解决专业问题都很有帮助。
3、教学内容革新
3.1 基础语法教学革新
在C++教学中,因语法的继承性,很多教师花费了大量时间在重复讲授c语言的基础语法知识。从编程语言的集成和扩展方面,c语言让大家学会了程序设计的方法,而c++则提出了面向对象程序设计的新风格。因此,在c++程序设计课程教学中,教师应该只占用少量的时间去介绍C语言与C++语言的继承部分,而把大量时间投入c++面向对象程序设计的思想与语法教学中,如类与对象、重载与模版、继承与派生等。
3.2 良好编程规范培养
传统教学中,教师很少对编程规范作出要求,致使学生所写的程序段只有自己认识,甚至一段时间后,有些代码连自己都不认识,这都是因为编写不规范所致。编程规范同时也是良好的编程习惯,对增加程序段共享、移植、修改等有重要的制约作用。教学过程中和布置课后作业时,可从变量定义、程序段格式、语法选择、注释等几个方面去注意培养,具体如下:(1)变量定义采用可识别的英文名称或缩写表示;(2)程序段中每一对{}都要保证上下对齐,且每一对{}都对应于段首和段尾;(3)每一对{}内的语句左对齐;(4)每一程序行上只写一条语句;(5)不同的语句段采用缩进格式以示区别;(6)尽量选择程序段精简、执行效率高的程序方式去实现相应功能;(7)关键语句及程序段均要作出注释。
3.3 案例程序库建设
C++教学是一个循序渐进的过程,配合案例程序会增加对相应知识点的掌握。教师可以针对不同的知识点设计相应的基础案例,用于验证该知识点。由教师讲解一部分,学生自行练习一部分。随着教学深入,开始设计包括几个知识点的小型程序,同样由教师讲解一部分,学生课后自行练习一部分。当一个大的知识块学完后,可以设计综合案例,用于验证整块知识的掌握程度和灵活运用能力,由学生自行完成后教师讲评。因此,教师可以针对各知识点建立起案例程序库,每讲完一部分,即从程序库中抽取案例进行讲解与练习,提高教学效果。
4、实践环节革新
C++语言的灵活性较大,对动手能力要求较高,要求学生必须加大练习量。对实践环节的改革可从实验课改革和课后实践交流2个方面展开。
4.1 实践过程指导
传统c++教学中,分为教师课堂讲授和实验练习课。通常情况下,教师在课堂上讲授相应知识点,在实验课时指导学生进行编程实践,重在编程结果,而轻于过程指导。对于学生来说,实验课上完成了所学知识点的验证,但并不能发现编程过程中隐藏的各种问题,如变量命名不规范、程序风格较差、选用方法效率低等。
作为课程的主导者,教师在实践课上可以选取一位学生为代表,令其完成程序编制,其他同学在旁观看。在该学生编写程序的过程中,逐一指出问题所在,直至一个规范的程序段编写完毕,运行正常为止。这一过程中,学生对自己存在的问题有了明确的认识,而其他同学存在的共性问题也能得到集中解决,经实践验证效果良好。
4.2 实践交流平台建设
随着网络交流平台的发展,网站、博客、QQ空间、QQ聊天工具等成为当前不可缺少的交流工具。由于每一门课程都有其规定的教学课时,在课堂外,教师基本不再与学生接触,使得学生有问题时很难及时得到帮助。为了增强与学生之间的实践交流,教师可以选择一种网络交流平台作为课后交流方式。当学生在自我编程中遇到问题时,可随时与教师进行交流。同时,教师可以在交流平台上发布编程经验类文章,供学生参考学习。采取这种实时的交流方式,既可以提高学生学习编程技术的兴趣,又可以丰富教师的教学手段和内容,同时也增强了教学效果。
5、结语
c++程序设计是物联网工程专业基础课程之一,在教学过程中难免遇到非计算机专业学生学习编程技术基础不足、兴趣不高、教学效果不好等难题,加之c++语言本身语法内容多,使用灵活等特点,加大了这门课程的教学难度。通过本研究的深入分析和案例支撑,为物联网工程专业如何提高C++程序设计的教学效果提供了有益参考,也为该课程教学效果的再提高提供了实践探索。