时间:2023-12-26 10:40:43
开篇:写作不仅是一种记录,更是一种创造,它让我们能够捕捉那些稍纵即逝的灵感,将它们永久地定格在纸上。下面是小编精心整理的12篇计算机视觉基础课程,希望这些内容能成为您创作过程中的良师益友,陪伴您不断探索和进步。
关键词:图像处理 教学改革 研究生教学
中图分类号:G642.4 文献标识码:C DOI:10.3969/j.issn.1672-8181.2014.05.098
《数字图像处理》课程是计算机应用技术专业研究生的重要基础课程,对于研究生综合能力的培养及学术思维的训练具有关键性意义。作为一个经典研究方向,数字图像处理已经有较为悠久的研究历史[1,2],因此作为一门研究生课程,《数字图像处理》有众多关键性重要内容可以教授,是培养研究生科研能力的重要基石。
作为一个重要的科研方向乃至领域,数字图像处理已经与模式识别、计算机视觉以及机器学习等学科建立起密不可分的联系,因此该门课程可以极大地拓宽学生的学术视野,为学生将来的学习和科研铺设道路。同时,数字图像处理方向相关的人脸识别[3]、图像拼接[4, 5]、轮廓提取[6]等课题,已成为计算机学科中最为热门的科研课题之一,充分反映了该研究方向的关键性地位。
在本科阶段相应课程的基础上,除讲授相关基础知识之外,研究生阶段的《数字图像处理》课程应更加注重学生专业能力的培养和科研能力的积淀,以指导科研作为该门学科的灵魂。本文对如何在研究生阶段的《数字图像处理》课程中增加对科研内容的强调进行了初步研究和探索,并将相关具体实施措施总结如下。
1 对顶级期刊和会议进行介绍
在研究生的各项科研综合能力中,具备一定科学文献阅读能力是不可或缺的一环,而进行文献阅读的前提是必须首先学会辨别文献的质量。在各种文献肆意泛滥的今天,缺乏这项能力,学生将很容易陷入垃圾文献的陷阱,从而影响其对科学研究的理解,甚至彻底歪曲学生的科研精神。因此我们认为,在研究生阶段的《数字图像处理》课程中,必须对IEEE Transactions on Pattern Analysis and Machine Intelligence、IEEE Transactions on Image Processing、International Conference on Computer Vision等相关的顶级科研期刊和会议进行适当介绍和说明,使学生明白真正的科研巅峰在何处。
2 介绍经典算法
数字图像处理学科中,拥有众多以Adaboost[7]为代表的经典算法,它们是构成整个学科的关键性支柱,也是学科发展中每个阶段的里程碑。仅仅注重表面基础知识,而忽略经典算法的讲解,是舍本逐末的短视行为。
3 强调与相关学科的关联
数字图像处理学科发展到今天,已经与模式识别、计算机视觉、机器学习、概率统计等学科建立起了密不可分的内在联系。在解决某一个具体任务时,已经不再是单一学科知识可以应对的,而往往需要多学科知识的综合发挥。因此,为切合实际应用,在讲解《数字图像处理》课程时,必须同时对相关学科进行介绍。使得学生明白在何时、可以从何种学科,获得相应帮助。
4 相关专业工具的介绍
工欲善其事必先利器,数字图像处理是计算机学科中的上层次内容,必须依托在相关专业工具基础上才能开展研究。如若缺乏对相关工具的了解,往往会事倍功半。以读取图像为例,依托相关工具可能只需要编写一行代码,而如果自行编写代码,可能需要数百行之多。因此,我们认为,必须在《数字图像处理》课程中,对Matlab、Opencv等专业工具进行专门介绍。从而节省学生在进行相关研究时,在摸索基础工具方面所花费的时间。
5 突出最新技术进展
发展迅速是信息学科的突出特点,作为研究热点的数字图像处理学科的更新更是日新月异。为相关科学研究服务,必须时时关注最新的科研热点,使学生随时了解最新的科研动向,为他们在将来进行科研方向选择时,提供更多的指引和选择。
参考文献:
[1]Gonzalez R.C., Richard E. W. Digital Image Processing [M]. Prentice Hall, 2007.
[2]Szeliski R. Computer Vision: Algorithms and Applications [M]. Springer, 2010.
[3]Li S.Z., Jain A.K. Handbook of Face Recognition [M]. Springer, 2011.
[4]李月龙,封举富.基于最小扭曲变换的正面人脸图像合成[J].计算机辅助设计与图形学学报,2011,23(6):1085-1090.
[5]Li Y., Feng J. Frontal face synthesizing according to multiple non-frontal inputs and its application in face recognition [J]. Neurocomputing, 2012,(91):77-85.
[6]Li Y., Feng J. Sparse representation shape model. 17th IEEE International Conference on Image Processing (ICIP) [C]. 2010:2733-2736.
人类社会进入了一个信息的新时代,以计算机为基础的信息技术渗透到社会的各个领域,围绕计算机的应用与技术正在快速地发展和变化。高等院校作为输送高素质现代人才的摇篮,面对计算机技术日新月异的变化,局限于传统教育模式的弊端,我国高校计算机教育正在面临巨大挑战,需要借鉴国际上,特别是发达国家的教育经验,以适应社会对人才的需求。
英国的高等教育历史悠久,起源于700多年前,无论是科研还是毕业生的质量在世界上均享有盛誉。20世纪80年代后期,为了适应经济与社会发展,迎接21世纪的挑战,英国政府和教育界人士就高等教育的发展方向展开了激烈的讨论,英国政府发表了《90年代英国高等教育的发展》绿皮书,绿皮书强调高等教育应为国民经济服务,英国大多数大学都同业界保持着密切的联系。
由于计算机技术的快速发展,激起了信息产业革命,为了满足工业和科研的需求,大学计算机教育处于英国教育改革的前沿。计算机科学是一门多学科交叉的学科,具有很强的理论性和实践性,而且,与其他学科相比,它的一个显著特点是快速的变化性,需要不断更新和改革大学计算机的课程、教学内容以及培养方式。在英国传统文化的影响下,英国大学追求自治,形成了自由而严谨的风尚,大学有独立的自我管理机构,有权设置不同课程和教育评估体系,为了适应就业市场对人才的需要,英国的大学计算机教育紧密反映了当今工业以及科研的需求。
尽管近年来我国大学计算机教育取得很大的发展,相对于西方发达国家,仍具有一定滞后性,需要借鉴发达国家的教育经验,提高计算机教育质量水平。本文根据笔者在英国大学学习和工作的经历和感受,着重从课程设置、学科建设和学生素质培养等方面,以个人的视角分析英国一些大学的计算机教育特点,并结合在国内大学计算机教育的经验,探讨计算机教育改革的一些问题。
2 自主、灵活的课程设置
2.1 英国大学计算机课程设置简介
计算机科学是一个多学科交叉的学科,工程和数学是其根本,同时与其他学科有广泛的联系。例如,硬件设计与电子学和电子工程紧密相关,芯片制造与固体物理相关,而用于构造、分析和软件验证的形式化方法更多地与数学相关。而且,计算机及其应用的理论与实践相关的各个课程还在继续演化,这意味着计算机课程选择具有较大的广泛性,特别是当今计算机科学技术正在快速变化发展,如何选择与当今工业和科研发展相适应的课程尤为困难。
英国大学自主性的教育体制特点使得英国计算机课程设置具有很大的灵活性和多样性,英国的大学由于不同的教育传统和研究特色,尽管同样是计算机专业,而在课程设置上有很大的不同。为了了解英国大学计算机课程体系特点,下面主要以剑桥大学(University of Cambridge)、爱丁堡大学(University of Edinburgh)和利兹大学(University of Leeds)为例,主要介绍其本科的课程设置特点。因为,本科阶段的教育是高等教育的基础,本科计算机课程体系是培养高级计算机人才的核心基础。英国的本科有3年学制和4年学制(一般英格兰本科是3年学制,而苏格兰是4年),但课程涵盖了非常广泛的范围。
剑桥大学的自然科学在世界上享有盛誉,它的计算机课程设置也反映它的研究特色。在剑桥大学的学生可以选择3年的计算机课程学习,也可选择先学习一年的计算机课程,接下来的2年学习其他自然科学,或者先学习一年的数学课程,再学习计算机课程。这一点与国内很不相同,国内学生一般不能跨专业选择课程。剑桥大学的计算机学位课程划分为3个部分(Part IA, Part IB 和Part II), 不同体系体现了不同的特色。前两个部分强调在计算机科学领域的扎实基础,而在后一个部分是专门深入的学习。第1、2年的基础课程涵盖了计算机科学基础理论和实践课程,包括:面向对象语言Java、操作系统、离散数学、密码学分析、算法、数字电子学、有限自动机、软件设计和专业实践等,其中数字电子学包括数字组件和电路基础。同时,学生还需选择一些面向自然科学的数学课程,以及自然科学课程,例如,化学、物理、地质学、进化与行为,以及有机生理学等。而第2年的课程主要是计算机专业核心技术与理论课程,例如,实践课程包括计算机设计、数字通讯、编译器构造和图形学等;理论课程包括语义学、逻辑与证明和计算复杂性等。第3年的课程主要是专业性很强的课程,学生根据兴趣和需求,选择偏向工程、理论或者应用方面的有针对性的课程学习。剑桥大学的学生生源较好,并且由于在自然科学研究的优势,计算机课程设置体现了多学科交叉和基础性特色。
在爱丁堡大学,计算机科学是信息科学的一个部分,涵盖人工智能和认知科学。爱丁堡大学的计算机学位课程均由从事相关领域研究的专家执教,爱丁堡大学在计算机理论研究方面拥有很高声誉,课程设置很大程度上反映了该校的研究特色。爱丁堡大学属于苏格兰体制,本科是4年学制,在第1、2年主要学习信息科学的课程和相关数学课程,第3年选择核心技术和理论课程,保证具有广泛的基础专业知识,最后一年完成毕业设计和专门课程学习。第1、2年主要包括数学、信息科学和计算机的基础课程,如:数据结构、算法、计算机系统、软件工程、有限自动机、语言处理和一些基础数学课程等。第3年是一些计算机专业相关课程,学生可选课程相当广泛,包括:算法和数据结构、可计算性和复杂性、语言语义学与实现、计算机设计、计算机体系结构、操作系统、企业计算、基于对象和组件的软件工程、计算机安全、编译技术、计算机通讯和数据库系统等。而最后一年的课程是与毕业设计相关的和提高性的课程,可选的课程主要包括高级数据库、高级编程语言、计算复杂性、计算机代数、计算机图形、计算机网络、分布式系统、嵌入式软件、形式编程语言语义学、人机接口、模型与仿真、并行体系结构、并行编程语言和系统、软件体系结构、过程和管理、系统级集成实践、类型和编程语言和可视化等。从这些课程设置体现出爱丁堡大学很强的计算机特色,课程覆盖面广泛而深入,反映了当前计算机科学研究发展。
利兹大学的计算机在分布式系统和人工智能方面的研究力量较强,同时与产业界有着密切的联系,课程设置也体现它的特色。利兹大学的计算机本科是3年学制,也可另加1年的社会实践。第1、2年的核心基础课体现了计算机专业性和它的研究特色,包括编程语言、计算机系统、分析与建模、计算数学、计算导论、系统工程、软件工程、知识管理、人工智能、信息学、分布式系统构建、人与计算和专家系统等。另外,高年级的选修课程主要涵盖具有特色的研究方向,体现出很强的专业性,如离散与优化、复杂性理论和逼近算法、计算机视觉、自然语言处理、知识表示与推理、生物计算、科学计算、高级计算机图形学等。这些课程基本上是与计算机直接相关的课程,课程设置尽量适应产业和科研的需求。
关键词: 医学影像技术专业 校院结合 工学交替 实施方案
医学职业教育是直接为地方卫生事业服务、融知识传授和技能培养于一体的职业教育,承担着健康所系、性命相托的责任,具有实践性很强的行业特点。而影像技术专业又是一门技术性很强的学科,且该课程涉及理、工、医等领域,课程技术种类多,学习内容抽象难懂,不易理解,因此,此项学科的实践就显得尤为重要。医学影像学具有自己独立的理论体系,是理、工、医结合的产物。现在培养医学影像复合型人才的问题,已经引起教育工作者、教育理论界和国家教育行政部门越来越密切的关注。
计算机技术的飞速发展使人类数据存储与处理的硬件环境有了质的飞跃;人工智能、模式识别、计算机视觉、图像处理、计算机图形学和数据库等学科的发展,又为数据处理提供了有力的软支持。因此,借助于已有的各种计算方法,更加充分、高效和客观地提取出医学图像中的有用信息,提高医生的诊断效率己势在必行。计算机辅助医学图像分析正是基于上述背景产生的一门充满活力的交叉学科。
为了缩短教学与临床的距离,以更好地适应临床实践的需要,我们对周口市市、县、乡各级医院医学影像科室进行了调查,确定临床对中职影像人才的需要,在此基础上,我们为使“校院结合、工学交替”教学模式顺利进行,以更好地与临床影像工作对接,特制定了符合中职教学特点的医学影像技术人才培养方案,培养目标定位为各级医疗机构X线、CT等医学影像技术岗位培养知识技能型人才,课程围绕医学影像技术岗位的医学影像检查技术、医学影像诊断学及医学影像设备学进行设置,课程改革基于影像技术岗位工作过程,突出“教、学、做”一体化,最终形成“校院结合、工学交替”的人才培养模式,即学生第一年的基础课程教育、专业思想教育在校内进行;第二年的专业课教学在我校医学影像实训基地和临床教学医院(周口市中心医院)交替进行,且学生利用周六、周日时间,分批次进入教学医院完成专业课技能见习,强化训练临床基本技能。医院临床指导教师一对一地对学生开展真实病例教学,学生直接接触患者进行临床实践,这使见习效果明显得到增强,既缩短了学生进入医院实习的适应期,又为其临床顶岗实习打下了扎实的基础。并且通过让学生早期接触临床,将课堂教学改为临床真实教学环境,利用先进齐全的仪器、设备,加上医学影像技术人员丰富的工作经验和充足的临床病例资源,师生共同参与教学和临床实践,以增强教学效果。第三学年的顶岗实习在实习医院进行,由实习医院实训指导老师带教,按照实习的教学大纲,明确实习操作项目,强化学生对专业技术的实践,指导学生把专业知识与技能应用于临床工作中,并接受医院和学校的双向考核。实习结束以后,由各科带教教师按照项目操作给出各科成绩,医院根据学生的操行表现评出优秀、良好、合格、不合格的等级。实习返校后参加毕业综合考试,这样培养的学生能适应医学影像岗位的工作。
同时注重理论教学与临床实践的结合。理论教学应为临床实践服务,学好该课程的根本目的是更好地为临床诊断奠定基础。教学和临床实践相结合是医学教育的总趋势和最终目标,应将目前医院检验科常规应用的检验技术与开展的检验项目作为检验岗位需求的技能标准,做到教学内容与临床岗位需求的接轨,使理论教学更好地适应当代临床的发展。
医学影像领域作为一个完整的体系,其教学课程的设置应遵循连续性和系统性。例如,应先让学生掌握信号分析基础理论知识,然后进一步提高专业技能。在硬件方面,完成各种电子技术知识的学习之后,重点掌握医学成像设备的特点与成像原理;软件方面,完成计算机应用和基本语言程序设计的学习后,结合医学图像处理技术重点培养医学图像分析技能。因此,要合理安排以上相关课程的顺序,使学生循序渐进地掌握较为熟练的操作技能和应用能力,达到在具有较广知识面的同时具备一定专业深度的水平。
现代医学影像技术学借助各种不同的成像原理与方法,使医生能观察到肉眼不及的人体内部器官结构,并了解其生理功能和病理变化,在影像监视下采集活体标本,达到活体诊断和介入治疗的目的。因此,基础专业理论和临床相关学科知识及专业本身各内容如何合理安排教学和突出重点至关重要。以理论联系实际、教学与临床相结合为重点,在教学过程中尽量采用多媒体教学,其获取的丰富影像资料、体现计算机强大后处理和图像重建能力都是传统放射学无法比拟的。多媒体影视资料可以更直观地显示设备的检查过程,部分甚至可代替现场实习,缓解教学实习与临床工作的矛盾,在临床教学过程中取得良好的效果。
为了真正做到“校院结合、工学交替”,我校特指定了本学年的实施方案,我们将组织2011级学生进行阶段培养,通过理论教授,实验室练习,到实习医院实地操作演示及练习,医院实地操作考试等途径,使学生学习兴趣提高,理论知识易于理解。
总体框架如下:
第一步:2012年9月~2012年10月15日
进行理论教授与实验室实践练习
第二步:2012年10月15日~11月15日
到周口市中心医院进行现场教授与独立操作
第三步:2012年11月15日~12月15日
到周口市中心医院进行现场操作考试
第四步:2012年12月15日~2013年1月
關键词:机器视觉;CDIO;教学改革;研究生教学
我国的研究生教育经过扩招后,质量出现了严重下滑的现象,研究生教育改革势在必行。为提高研究生教育质量,课程体系改革是中心工作。传统的教育模式主要是教师主动传授,学生被动接受。这种教育方式已不适应当前人才培养需要,因此必须逐步改变传统教育模式,探索适合中国教育特色的研究生培养路线,实践证明CDIO是培养创新型人才的可行之路。本文以研究生机器视觉课程为试点,探索CDIO模型下的研究生教学改革方案。
1.机器视觉课程特点
随着数字图像处理、人工智能技术的快速发展,机器视觉应用越来越广泛。机器视觉成为了信息相關专业研究生的一门重要选修课,该课程涉及信息处理、计算机、机器人、人工智能等众多领域。机器视觉从信息处理的层次研究视觉信息的认知过程,包括视觉处理中的方法、理论及信息描述等。该课程具有以下两个特点。
1)理论抽象,内容广泛。
机器视觉涉及图像处理、模式识别、机器学习等多个学科领域,所涉及的内容数学表达抽象、内容广泛、算法繁多,学生难以理解。
2)与工程应用结合紧密,实践性强。
这门课程知识体系的构建源自各种特色专业应用领域。在工业中,特别是在各种生产线上,视觉产品应用非常广泛。只有让研究生经历大量的工程项目设计与实现,才能深切体会各种机器视觉算法和技术的功能及作用。
2.CDIO教育模式
随着经济、科技高速发展,全球面临工程人才短缺和工程教育质量问题。为了培养符合企业需求的人才,麻省理工学院、瑞典皇家工学院等4所大学经过多年探索、研究,创立了CDIO工程教育模式,并成立了CDIO国际合作组织。CDl0教育模式是构思(conceive)、设计(Design)、实现(Implement)、运作(Operate)4个英文单词的缩写。
(1)构思要求学生根据所掌握的专业知识基本原理,确定个人未来的发展方向。
(2)设计是以产品规划与设计为核心,通过产品研发,解决某个具体问题。
(3)实现是以制造或建造为核心,巩固学生所掌握的专业知识,提高实践能力,形成一体化的课程实践。
(4)运作是产品应用的各个环节。该环节将学生能力培养贯穿于从产品研发到运行的整个生命周期中。通过系统的产品设计与研发,提高学生的专业技术水平,培养学生个人能力、职业能力、态度、团队工作和交流能力等。
CDIO代表了一种工程教育理念,它是“基于项目教育和学习”及“做的过程中学习”的抽象表达和集中概括,强调通过密切联系产业培养学生的综合能力。燕山大学、清华大学、汕头大学等多所高校进行了CDIO教育模式试点改革,并取得较好的成效。
3.基于CDIO的“机器视觉”教学改革
本课题组借鉴国内外高校在CDIO教学改革方面的经验,重新审视了江苏科技大学研究生教学中机器视觉课程的不足之处,参照CDIO教育模式,结合江苏科技大学特点制定了基于CDIO的机器视觉教学改革方案。江苏科技大学研究生来自全国各地,部分学生是非计算机专业出身,知识水平及应用能力差距较大;同时,该课程内容涉及广泛、综合性强,需注重实践能力的培养,这些都给教学带来了困难。
3.1加强教师素质培养与团队建设
CDIO模式的实施需要教师深刻理解CDIO模式的理念,具备丰富的工程实践经验,并能长期与企业在各个工业领域开展合作,因此,江苏科技大学作出關于培育CDIO模式师资力量的计划。首先,让青年教师到企业挂职锻炼,了解企业实际需求及工业的相關技术发展;其次,与企业签订合同,让教师参与企业产品研发,提高教师工程实践能力;再次,将教师企业挂职经历、参与企业合作研发产生的效益等作为晋职的考核指标之一。
本次教学改革打破传统系、教研室的观念,组建复合型“机器视觉”教学科研团队。该团队以机器视觉课程为主线,吸收数学、计算机语言、软件工程等基础课,工业控制、机器人学、人工智能、模式识别、机器学习等专业课,实现机器视觉课程和相關专业课程的融合,促进机器视觉与相關专业知识的互相渗透和有机结合,实现教师及实验资源的合理使用。
同时,学校要求本课题中从事机器视觉教学的教师,不仅从事机器视觉课堂教学,而且必须参与相關项目,从事实际项目设计、开发、测试等工作。目前,江苏科技大学的机器视觉教学科研团队,已与企业合作承担了若干与机器视觉相關的项目。通过参与项目的实际开发,提高了教师的教学科研能力,同时为CDIO模式的有效实施创造了有利条件。
3.2开展讲座式、讨论式、实践式教学
本次教学改革将机器视觉的教学内容分割成滤波器、特征提取与匹配、图像分割、图像匹配、目标跟踪、光流、三维重建、缺陷检测等若干研究主题。针对每个主题设计项目,教师围绕项目进行讲授,让学生理解每个项目的目标、任务、所涉及的基础知识、开发项目的基本过程。
在课堂教学中,教师采用提问式教学方法,激发学生的讨论热情,鼓励学生自发的讨论问题。
项目实施过程中,将3-5名学生分为1组,每组同学选择并完成不同的项目,达到将所学理论融入科研实践的目的。学校鼓励学生完善所做项目,积极参加大学生“挑战杯”、机器人大赛、电子设计竞赛等各种科技竞赛,增强学生就业创新能力。
最后,组织学生进行课题讨论,提炼总结创新成果,并要求学生提交计划、分析、设计、开发、测试等创作文档。通过项目创新设计思路的描述和分析讨论,使学生将机器视觉课程与专业课程体系有机地结合起来,深入消化、吸收所学知识,理解、掌握科研创新的方法及过程,激发实践创新兴趣。
3.3创建实习实验室,设计真实的教学环境
CDIO教育体系旨在培养高素质的工程技术人员,注重将教学项目的全过程放在真实的产品开发环境中。江苏科技大学非常注重教学工厂型实习基地建设,课题组抓住洽谈机器视觉项目的契机,与符合专业发展方向的机器视觉企业建立了校企合作机制,创建了符合教学要求的产品研发实习实验室。产品研发实习实验室既是教室又是实验室,真正做到“教学和实践合一”。课程教学时,让学生在实验室中产品开发的实际环境下进行实训、研究。学生在实践中学习,学习中实践,有利于其构建扎实的“机器视觉”知识体系。
在产品研发实习实验室中,要求学生严格按照企业规定进行实际产品研发,例如产品开发中的需求分析、概要设计、详细设计、软件编码、测试等工作要严格按照需求执行,要有相应的技术文档。这样有利于学生在真实的产品研发过程中掌握技术规范、工程化研发思想及相应的专业技能。
教师参与产品开发,可将教师的最新研究成果应用于企业,也可通过企业的实际需求带动教师的科研工作。在此过程中教师能更好地指导学生,与学生形成默契的合作關系。
另外,课题组将公司的企业文化及管理思想引入实习实验室教学环节中,让学生在企业环境下掌握管理知识、学习管理经验、养成良好的职业素养,做到企业运营与教学管理的真正融合。通过这样的教学形式,培养真正适合企业需要的人才。
3.4培养学生合作精神,增强学生团队意识
“合作精神”与“团队意识”是CDIO教育理念精髓所在。社会的进步与现代企业发展的趋势都对高校人才“合作精神”与“团队意识”的培养提出了迫切要求。但中国人内敛的传统自我意识使学生之间缺乏交流与合作,以考试为中心的应试教育忽略了对学生“合作精神”与“团队意识”的培养,独生子女问题导致部分学生自我思想较重,缺乏相互理解、宽容、谦让的精神。
因此,为了培养学生的“合作精神”与“团队意识”需要学生将所学的专业知识运用到团队课题中,在课题中实践合作精神,培养团队意识。实践教学作为研究生教学环节中重要的组成部分,是培养学生实践及创新能力的重要途径,更能将“团队意识”的培养落到实处。
在机器视觉课程中,安排4~5名学生组成小组,完成项目作业,每人承担项目的不同部分,最后以组为单位提交设计、开发报告,让学生逐一汇报自己的工作,进行项目总结交流与经验分享。这种方式即拓展了学生的知识,又培养了学生的语言表达、沟通协调等能力。
机器视觉类项目以算法为主,需要通过软件编程实现,在实际项目开发中通常采用VSS(Visual Source Safe)源码版本控制软件进行团队开发管理。教学中,学生的项目计划文档、需求分析文档、软件设计文档、算法源代码、测试文档等均通过VSS服务器实现共享管理,以便学生从项目中学会计划、协调、沟通,提高学生的组织和团队合作能力。
学生最终的成绩以小组共同开发的软件为评分依据,同组组员得分相同。通过项目调动学生的主观能动性,增强与他人的合作精神,培养团队意识。
4.教学效果评价体系
为了客观地评价CDIO教育模式的教学效果,发现教学过程中的问题,制定教学完善措施,需要建立一套科学的教学效果评价体系。在CDIO模式中,除了评估学科基础知识、基本技能之外,也要评估学生个人的人际交往技能以及产品研发过程控制和系统构建技能。
本课题组使用以下方法衡量学生是否达到预期学习效果。
(1)笔试。评价学科基础知识、基本技能的掌握程度。
(2)口试。项目完成后,每个学生都要阐述产品的计划、分析、设计、编码、测试等产品开发过程,以评价学生创新、思维、表达、团队协作等综合能力。
(3)软件演示。将每个项目小组开发的软件进行展示,由多名教师联合评估打分,并提出反馈意见,以便后期改进。
通过测评,评估学生的综合能力,并发现教学过程中的问题,以便在下个教学阶段进行完善。
5.结语
本课题通过CDIO教育模式与机器视觉课程相结合,将教师、学生与企业紧密联系在一起,将教学项目的全过程置于真实的产品开发环境中,提出针对机器视觉课程的具体措施和建议。实践证明,采用这种教学方式提高了研究生的教育质量,是对今后培养符合社会需要的高素质工程技术人员的一次有益尝试。
参考文献:
[1]杨颉,对研究生教育的扩招以及发展的若干恩考[J],中国高等教育,2004(5):40-43.
[2]郭小勤,曹广忠,计算机视觉课程的CDIO教学改革实践[J],理工高教研,2010,29(5):98-100.
[3]查建中,工程教育改革战略“CDIO”与产学合作和国际化[J],中国大学教学,2008(5):16-19.
[4]郭长虹,赵炳利,李兴东,等,面向CDIO的工程图学教学改革[J],工程图学学报,2011(5):56-60.
关键词:C语言程序设计;运算符;优先级;二维数组
中图分类号:G642 文献标识码:B
1引言
“C语言程序设计”课程对理工科专业学生来说,是一门非常重要的基础课程,但初学起来十分困难。其主要原因是:(1) C语言的数据类型和运算符多、表达式复杂;(2) 初学者在学习过程中必须暂时保留人的思维形式,使用计算机的程序模式工作。为了使学生学习好“C语言程序设计”这门课程,许多教育工作者对教学方法进行了深入的探索,积累了丰富的教学经验。例如:文献[1]介绍了C语言程序设计的案例教学方法,文献[2]讨论了C语言程序设计中关于自增和自减运算符的理解和编程要点。尽管如此,如何使学生能更好地掌握C语言程序设计仍然值得教育工作者进一步探索。本文将自增和自减运算符分为优先级不同的前缀++(前缀--)与后缀++(后缀--)两种运算符,给出若干程序设计和调试的技巧,使学生更好地掌握C语言程序设计。
2关于自增和自减运算符
如果C语言表达式存在自增或自减运算符,则其值的计算和表达式中变量值的改变很容易弄错。文献[3~5]规定前缀自增(自减)和后缀自增(自减)运算符的优先级相同,都大于算术运算符,结合方向是自右向左。它们的区别是:前缀自增(自减)是在使用前增加或自减少1,而后缀自增(自减)是在使用后增加或自减少1。作者在教学实践中发现:学生按上述规则并不容易读懂程序和编写程序。本文把前缀自增(自减)和后缀自增(自减)运算符看成两种运算符,且规定前缀自增(自减)运算符的优先级大于算术运算符,后缀自增(自减)运算符的优先级低于赋值运算符,仅高于逗号运算符。本文的这一规则比较适合我们常常使用的Turbo C编译系统,也容易被学生理解和掌握。
例1:若i=3,则执行赋值语句j=++i;时是将i的值先变为4,再赋值给j,j的值变为4;而执行赋值语句j=i++;时是先将i的值赋给j,j的值为3,然后i的值先变为4。
例2:若i=3,则执行赋值语句j=(i++)+(i++)+(i++);时是将三个i的值先加得12赋给j,j的值变12,然后i的值再三次增1变为6;而执行赋值语句j=(++i)+(++i)+(++i);时是先将i的值再三次增1变为6,然后将三个i的值相加得18赋给j,j的值为18。
例3:若i=3,则执行赋值语句printf(“%d”, -i++);时是将先输出i的相反数-3,然后i的值再增1变为4;而执行赋值语句printf(“%d”, -++i);时根据优先级相同的负号与前缀自增运算符为自右向左的结合方向,则是先将i的值增1变为4,然后再输出i的相反数-4。
值得注意的两个问题:
(1) 当一个变量出现在一个函数的多个参数中时,不能将自增或自减运算符作用于该变量,否则用本文规则不能正确计算表达式的值和输出结果。例如:若i=3,则执行赋值语句printf(“%d, %d”, i,i*i++);时其输出结果为(4,12);而执行赋值语句printf(“%d ,%d”, i*i++,i);时其输出结果为(12,3)。
(2) 当自增或自减运算符出现在逻辑表达式中时,自增或自减运算可能不被计算。例如:
若i=1,j=1,k=1,在计算表达式++i||++j&&++k时,因++i非0,不再计算++j&&++k部分,直接得到整个表达式的值为1,因此,计算表达式后,变量i的值为2,而j和k没有执行自增加运算,其值都为1。
基金项目:2006年湘潭大学校级精品课程基金(湘大教发[2007]20)。
作者简介:黎自强(1963-),男,教授,博士,研究方向为计算机图形学,计算机视觉,智能计算。罗翠英(1966-),女,湖南益阳人,湖南工业大学讲师,研究方向为计算机图形学。
3关于scanf()函数和实型二维数组
在C语言程序设计中,常常利用scanf()函数对二维实型数组赋值,例如:下面的程序段是从键盘输入10个数到二维实型数组x中。
voidmain()
{ int i,j;
float x[5][2];
for(i=1;i
for(j=1;j
scanf(“%f”,&x[i][j]);
for(i=1;i
for(j=1;j
printf(“%f”,x[i][j]);
}
上述程序在Turbo C2.0集成开发环境下编译和连接是没有错误的,但运行时出现如下错误信息:
scanf:floating point formats not linked
Abnormal program termination
解决的方法有两种,方法一:
(1) float x[10][2]―>float x[10][2], t;
(2) scanf(“%f”,&x[i][j]);―>{scanf (“%f ”, &t);x[i][j]=t;}
方法二:在scanf()函数的%f前面保留一个空格,即:scanf(“_%f”,&x[i][j]);
4关于getch()的妙用
4.1查看显示结果
一般,在Turbo C2.0集成开发环境下,运行C程序后即刻返回到编辑状态。如果想看到程序执行的结果,就必须按Alt+F5键。如果在程序的结束行前加一个语句getch();则程序运行暂停在显示结果的界面,按任意键才返回编辑状态。这样能让程序员更简捷地查看结果。
4.2调试程序
一个能够编译、连接和运行的C程序,只有在没有结构上的错误的前提下才能保证其结果正确。这一步是靠调试程序来完成。对于初学C语言程序设计的学生来说,迅速找出程序结构上的错误是一个至关重要的问题。一个简单、可行方法就是利用printf()和getch()的组合语句在关键点跟踪程序的执行。
例如:程序段1-14是求1+2+3+…+n的和(正整数n由文件输入)。
1#include
2main()
3{
4int i=0,n=0;
5long sum=0;
6FILE *fp=NULL;
7fp=fopen("in2.txt","r");
8if(fp!=NULL)
9 fscanf(fp,"%d",&n);
10 for(i=1;i
11 sum=sum+i;
12printf("%ld\n",sum);
13fclose(fp);
14}
当文件in2.txt中的数据为10时,运行程序得到的结果为11,不正确。为了迅速找到错误所在,在9行与10行之间插入两行语句:
printf("n=%d\n",n);
getch();
再次运行程序,若屏幕上没有显示n=10,则就检查1-9行程序,直到屏幕上显示n=10为止;否则程序的错误是在10-13行,这时去掉在9行与10行之间插入的两行语句并将11行语句改成:
{ sum=sum+i;
printf("%ld\n",sum);
getch();
}
再次运行程序,结果发现只要击一次键就会返回编辑状态,这就说明循环语句没有起到循环作用。检查出第10行末尾多了个“;”,去掉“;”并运行程序得正确值55。
4.3用于菜单选择
getchar()和getch()都可以从键盘接收字符,它们的区别是:(1)前者是一个函数,后者是一个宏名;(2)前者接收字符时,会将键入的字符回显到屏幕上;后者则不会将键入的字符回显,很适合于在菜单中进行选择。下面的程序段引自文献[2],它是判断某年是否为润年,但在标号语句处有一个结构错误,文献[2]是将标号为error 的语句改为getchar(),ch=getchar();,本文给出一种不同的修改方法:将标号为error 的语句改为getch()。
# include
main( )
{
int ch;
int year;
do {
printf("please input year:\n");
scanf("%d", &year);
if(year%4 ==0 && year% 100!=0||year%400== 0)
printf("YES %d\n",year);
else
printf("NO%d\n", year);
printf("Y--continue, any key--exit\ ");
error: ch=getchar ( ) ;
} while (ch = = ‘Y’ || ch = = ‘y’);
}
4结束语
C语言程序的编写和调试是初学者学习“C语言程序设计”课程中遇到的难点中的两个。掌握C语言运算符的优先级和结合方向是初学者正确编写C语言程序代码的前
提。本文通过把前缀++(前缀--)与后缀++(后缀--)运算符理解为优先级不同的两个运算符,能使初学者,尤其是非计算机专业的学生,更好地掌握其表达式的计算,进而正确设计出高效的C程序。同时,介绍的几点C程序调试技巧能在一定程度上提高初学者的程序调试能力。
参考文献:
[1] 徐萍,宫丽华. “C语言程序设计”课程教学改革的实践和探讨[J]. 电脑知识与技术,2008,4(1):160-162.
[2] 陈仲民. 关于C语言教学方法和程序设计的探讨[J]. 计算机教育[J]. 2007(6):3-6.
[3] Kernighan B W, Ritchie D M. The C Programming Language[M]. 2nd ed. Pearson Educatin,2006.8.