计算机视觉知识点范文

时间:2023-12-20 17:55:53

导语:如何才能写好一篇计算机视觉知识点,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。

计算机视觉知识点

篇1

【关键词】电力工程;预结算;编制;策略

一、电力工程预结算的特点

近些年来,我国的经济处于高速发展的阶段,各行各业的竞争极为强烈,电力企业要想在这竞争中站稳脚跟,就需要在电力工程的预结算方面进行不断的改进以及创新。对电力工程预结算进行正确的编制,这就是电力企业在当下最重要的目标。电力工程进行预结算编制(以某电力工程为例)的分析如表1所示。

表1 中显示了电力工程预结算的内容,这就是电力工程施工的依据之一,当然了,除此以外,施工方还要对工程进行计价计量,而这是依据所签订的合同的。如果在前期签订的合同中,电力工程的预结算是正确无误的,那么就不需要再做任何改变了,就可以直接向企业提交预结算报告书了,也就是意味着签订的合同中的总价格与预结算的总价格是相符的,不需要再做出改变协调。所以,在另一个方面,

如果签订的是单价合同,那么施工方就需要根据预结算表,把单价与工程数量相乘,所得的积就是总价,这时要将汇总的变化价格以及索赔价格递交给承建方,也就是给其的预结算价格。在电力工程差的预结算编制中,具备以下的特点:

1 计价标准要统一

在计算电力工程的价格时,一定要具有统一性,在遵守规定价格的前提下进行清单计量项目的制定。在整个过程中,计价标准一定要统一,不可出现计价标准互相不同,不统一的情况。在我国,目前在对于电力工程的预结算的价格管理方面,还是没有形成固定而且统一的正规市场体制。所以,针对这种情况,电力企业应该提高自身竞争力,要科学的管理市场的公平竞争活动,使得企业的能源资本尽量做到节约使用,在保证电力工程施工的总体质量的前提下,减少对能源资本的损耗以及对环境的污染。

2 鼓励企业自觉报价

应该鼓励电力企业自觉进行呈报价格,投资企业要具备自行设定价格的能力,电力企业单位则要做足市场调研,得出结论,然后再依据调研所得的市场价格,在此基础之上考虑企业自身的经济实力,经过多方位的考量,最终确定价格。除此之外,投资企业还可以根据工程造价有关部门给出的参考价格进行定价。经济的全球化在电力行业里也造成了巨大的影响,使得电力工程逐渐的向国际化的模式靠拢,

从而使得市场竞争体制不断地全面化。所以,结合此种情况考虑,就要求电力工程结算编制一定要严格的执行国家的相关规定,这样做不仅仅在一方面保护了电力工程的质量,保证电力工程的进度,而且在另一方面,还在行业内形成了一个公平公正公开的投标环境。

3 电力工程预结算还需法定性

除了以上的两个特点之外,在对电力工程预结算时,还要具有法定性能。这是因为在各个环节上,电力工程的价格都处于一个比较稳定的状态,这在某种程度上大大的减轻了电力工程预结算工作人员的工作强度。

二、电力工程预结算编制中所存在的问题

电力工程预结算虽然在大力的发展,在工作中也取得了一些成绩,获得了一些经验,但是在电力工程预结算中仍然存在着各种各样的问题。以下就对电力工程预结算中存在的问题进行简单的总结:

1 电力工程结算编制缺乏监管力度

在我国目前的电力工程预结算编制质量在监管上的力度还不够,在电力工程预结算编制的工作中出现了问题,但是却没有问责制度,更没有较为系统完善的奖惩制度,工作出现失误以及工作不负责任造成的损失也不需惩罚,工作出色也没有奖励,这使得员工的工作积极性不高。在管理编制预结算报表的单位缺乏合理的控制;再者,组织施工单位的员工的思想认识还跟不上,综合素质并不高,以上种种都是可能导致电力工程预结算有过多估算的原因。在电力工程的建设过程中,有些工程的周边环境过于复杂,在对地质进行勘查时准确性不够,在设计思想上,还延伸不够深入,技术水平方面还有所欠缺,使得在施工过程中出现再三调整设计的情况,另外,在施工现场的勘察以及认证逐渐增多,在工程竣工时的基础资料上并不够详尽,这容易使工作人员出现工作上的疏忽。

2 二次复核容易出现问题

在对电力工程的质量进行二次复核时,有些工作人员将包含在内的工程质量内容重复复核,而对于那些需要重新核算的工程质量内容却忽略掉了,出现严重的二次复核失误。因为在签订合同时,合同的条款缺乏对双方行为约束,有些条件上,双方的要求条款还存在一些偏差,这使得施工方可以有意的进行重复核算。尤其是在工程承包中,有时候对承包范围以及承包条件没有进行详细的要求,所以会造成所谓的“按实结算”。

3 材料市场存在不健康竞争

近些年来,电力工程材料的市场的规模越来越大,使得经济增长被大大带动,但是在这个市场中,却没有对材料的价格有一个合理的控制,所以导致了目前电力工程材料市场的不健康的竞争,材料价格上下波动情况严重。实际的电力工程中,材料价格所占的比例达到了60%,这个比例十分巨大,所以在控制材料价格这个方面对电力工程预结算的影响是极为巨大的,良性的调控会提升电

力工程的效益。

三、提高电力工程与结算编制质量的具体办法

在电力工程预结算的具体工作中存在着许许多多的问题,这对预结算的质量造成很大的影响,为了使得工程的应得利益不受到损害,每一个施工单位都要高度重视预结算的编制质量,以下为解决上述问题的具体办法。

1 平衡各相关方的利益

现在,电力工程市场的竞争极为激烈,为了稳固企业的市场地位,就要中标,但是对于中标的工程是否有利润,这将会影响企业的向前发展,而且这也和企业自身的经营与决策、正常的经营都有莫大的关系,基于此,企业要做好对各个利益相关方的平衡,使各个相关方之间的关系处理良好。在严抓投标工作的同时,还要为电力工程预结算的工作安排综合素质较高的工作人员,使投标工作能稳定顺利地开展。为了提高工作人员的积极性,可以设置合理科学的奖惩制度,要对工作人员的成绩进行严格的评价。

2 提高预结算工作人员的业务水准

要达到做好预结算工作的目标,最根本的就是用业务水准最好的员工。所以预结算工作人员一定要具备过硬的专业知识以及扎实的业务水准。预结算工作人员要熟悉掌握工作中遇到的各种知识,能够快速的对定额工程的单价进行转换计算。要一直关注市场上计价的最新信息,而且还要认真的对工程现场的工作进行观察。

3 拟订合同要慎密

工程的展开是基于合同的,所以工程的建设结果与合同就有很大的关系。在签订合同时,一定要本着公平公正公开的原则,虽然业主在该行业占者主导的地位,但是也住在制定合同时不能扩大自己的权力,削弱自己的责任,不能违背合理分配财务风险的原则。所以,企业在制定合同时,一定要认真谨慎,认真的对法律条款进行分析,在合同中一定要严格明确的对双方的责任进行划分,为后续工作的展开打好基础。

4 减少预结算工作时的失误

由于在预结算工作的过程中容易有遗漏的情况发生,给企业带来一定的损失,所以要减少预结算遗漏。工作人员在工程开始的时候,要按照设计图纸绘制工程的预结算,认真的对比预算图纸和投标清单,找出遗漏,并立即进行解决。在预算时,要参照审计之后的图纸。此外,还要在施工的时候搜集有力证据,并保护好索赔证据。

结语

预结算工作在电力工程中的作用是十分重要的,所以一定要加强企业在预结算工作上的力度。目前在我国,该行业的工作中还是存在着亟待解决的问题,在一定的程度上损害了企业本身的利益,也是的整个行业的水平参差不齐,影响了行业水准的更好发展。

篇2

关键词 计算机图形学 第三方演示 课程群 分组实践

Abstract At present, computer graphics has become an important part of undergraduate computer education, and it is also plays an important role to cultivate innovative talents to adapt to the information age. Based on the teaching of computer graphics course by the author as an example, analyzes the existing problems in the teaching of computer graphics, and put forward improvement ideas from three aspects: according to the different needs of students utilizing the third party demonstration teaching and cross curriculum interpretation, introducing course group to replace single course, employing group practice examination instead of individual, and other forms to improve the quality of teaching.

Keywords computer graphics; third party demonstration; course group; group practic

计算机图形学是一门介绍显示、生成和处理计算机图形的原理和方法的课程。它在计算机总体教学体系中属内容综合性较强且发展迅速的方向之一。该课程既有具体的图形软硬件实现,又有抽象的理论和算法,旨在为学生从事相关工作打下坚实基础。学生须以高等数学和线性代数的基本理论和较熟练的程序设计能力作为本课程学习的基础。课程的难点在于计算机图形学研究范围广,与其他学科交叉性强,且知识不断更新变化。在教学实施过程中,难点是理解和掌握相应的基础理论和算法,以及利用计算机图形学相关工具进行图形学实际问题的解决。

本课程对学生的培养学生围绕以下三个方面展开: (1)建立对计算机图形学的基本认识,理解图形的表示与数据结构、曲线曲面的基本概念。(2)理解并掌握基本图形的生成算法,并能对现有的算法进行改进,理解图形的变换和裁减算法。 (3)面向算机图形的程序设计能力,以底层图形生成算法为核心构建应用程序。相应的考查方式由理论授课、上机实习和课外作业三个单元构成。从近年的授课实践和考试情况分析,该教学内容难度设置合理,深入浅出且相互承接成为体系,学生总体反馈良好。但也存在一些矛盾和问题。以下将对几个问题进行重点阐述与思考,并提出课程改革思路。

1 计算机图形学与计算机辅助设计衔接问题

笔者所在院校是具有航空航天背景的工科院校,“CAD计算机辅助设计”是飞行器设计、机械设计与制造等多学科的重要课程。相关学科学生期望通过对计算机图形学知识的深入理解,促进CAD设计工具诸如Catia、Solidwork和Rhino等先进工具的运用能力。然而,目前的计算机图形学课程的教学和考察环节倚重低层算法讲解与基于OPENGL等的程序设计,除综述外并未具体引入CAD相关内容。产生的问题是,一方面,飞行器设计及机械设计与制造等专业的学生由于程序设计能力不足,难以驾驭较复杂的程序设计任务,在学习过程中心理压力较大;另一方面,由于授课均为教师为计算机相关专业背景,该课程的讲授并未衔接CAD相关技术,学生难以构建二者之间的联系。

解决方案:

本质上,该问题是由于选课学生的学习动机和基础不同造成的。以单一的教学和考查方式难以兼顾这类面向具体应用的学习需求。在教学方法上,采用第三方案例教学法和交叉讲解法相结合以解决此问题。具体的,将CAD等应用场合以具体案例形式讲解,授课教师邀请飞行器、机械设计相关教研组研究生以4~6学时的讲台演示的形式呈现CAD工具完整设计过程。授课教师则以交叉讲解方式为学生讲解运用到的计算机图形学知识点,同时与学生交互式的问答和探讨。在考查形式上,考虑到不同的学习动机和基础,采用多样化实践环节考查。计算机专业学生以OPENGL程序设计为考点,而外专业学生以CAD等面向应用的实践工具为考点,以兼顾各专业的学习需求。

2 计算机图形学与计算机视觉相结合的问题

当前,虚拟现实技术(VR)和人工智能技术(AI)两个最重要最热门的研究领域。虚拟现实的基础理论支撑是计算机图形学,例如三维场景的生成与显示。而人工智能的一个重要应用场景是计算机视觉,例如基于图像智能识别的自动驾驶技术和场景理解技术。很多学生对以计算机视觉为代表的人工智能技术怀有浓厚兴趣,同时,学生又难以区分计算机图形学和计算机视觉的关系。同时,二者在近年来的研究中呈现相互融合的趋势。如基于三维立体视觉的机器人与场景实时定位与重建。如何在计算机图形学课程中,很好地体现两门课程的不同,避免学生的混淆,拓展学生的知识面,都是具有现实意义的课题。

解决方案:

实际上,计算机图形学和计算机视觉可不失一般性的概括为互逆的关系:计算机图形学是由概念设计到模型生成,最终绘制图形图像的过程;而计算机视觉则是从原始图像中再加工并分析理解、以产生新图像(如二维到三维)或输出语义信息(如图像自动标注与理解、目标检测与识别)。将计算机图形学纳入“视觉处理课程群”框架,使学生首先掌握课程群中各课程的侧重点,着重理解图形学在课程群中的作用。精心选取2~3个计算机视觉和图形学交叉的当前主流研究方向,展开概念层面的演示讲解,不深究具体算法,着重阐述两种技术的相互依赖关系并对比二者的区别。相关领域的演示还包括增强现实、人机交互、计算机辅助诊断等等。鼓励学生自主学习,最终使学生在做中学、用中学,提高独立分析新问题和综合运用知识解决问题的能力。

3 如何平衡算法讲解和程序应用技能

计算机图形学涉及的算法多,核心算法是该课程的必讲内容,在算法细节的讲解过程中学生容易产生畏难厌学情绪,注意教学方法以调动学生的兴趣尤为重要。另一方面,对学生的考察方式最终是通过编程实践完成。学生在编程实践中常常遇到大量调试问题,同时要阅读大量文档以了解OPENGL接口函数的调用方法,这个过程占用了很大工作量。

解决方案:

在理论教学部分,着重讲清计算机图形学原理和概念、全面解析经典算法思想。课程强调对理论核心思想的阐述,用通俗易懂的语言,条例清晰的逻辑,进行简明透彻的阐述,附以直观、形象的动态演示系统,力图使学生在较短的时间内、有效地掌握基本理论。分析图形学各种经典算法的原理、可行性及几何复杂性,尽可能多地比较算法之间的思想差异,分别指出它们的优缺点和应用场合,并促进学生思考如何在保证算法的准确性、可靠性的前提下,提高算法的效率。同时注重接近国际前沿的研究内容,注重讲授经典知识和最新进展相结合,以激发学生的学习兴趣,提高课堂效率和活跃度,力争以较少的课时阐述计算机图形学的基本原理、基本方法,加大实践环节比重。通过往年学生完成的优秀课程作业作品的展示,激发学生的创造热情。改革实践环节的考查方式,以项目小组形式取代对个体的考查。原则上每组3~5人,自由组合。在课程结束前,采用小组现场演示讲解的方式,展示小组成员通过编程实践环节完成的一个项目。学生在项目小M中锻炼了团队协作能力,降低了个人工作强度,同时互相学习和督促的氛围使课程作业的质量得以大幅提高。以基础实验――目标性重建实验――自主性训练的层次化实践框架模式,逐步培养学生自主研究,独立解决问题、分析问题,确定解决方案的能力,树立正确的科学研究习惯,培养学生的科学研究能力。

总之,合理设计实践教学案例,进一步实现课程体系和实践内容的统一,建立一个多层次、立体化的实践教学体系,注重学生的参与性与实践性,引导和鼓励学生进行创新实践和课外研学。改革考核方式和考试形式,加大实践环节在成绩中的比重,强化实践能力培养,寓教于乐的同时引导学生追求卓越。此外,计算机图形学技术是发展非常快的一个研究及应用领域,且对编程要求较高,应注重实验室机房投入更新必要硬件,并保障软件编程环境的正常运行。

L鼙疚氖苤泄┦亢蠡YBA15035,江苏省教改项目JGLX13_008资助

参考文献

[1] 孙家广,胡事民.计算机图形学基础教程.北京:清华大学出版社,2005.2.

[2] 唐荣锡,汪嘉业,彭群生等.计算机图形学教程(修订版).北京:科学出版社,2000.

[3] LIU Hailan.On development and application of computer graphics[J].Computer Knowledge and Technology,2010(3):9551-9552.

[4] 娄凤伟.创造性思维与计算机基础教学[J].教育探索,2002.

篇3

关键词:数字图像处理;教学改革;试验教学

0 引言

《数字图像处理》是一门汇聚光电探测、电子学、数学和计算机等众多领域技术的综合叉学科,通过对原始图像的加工,可以使图像具备更好的视觉效果,同时满足某些应用的特定需要。《数字图像处理》是一门偏重于应用的工程学科,经过半个多世纪的发展,目前已广泛应用于工业检测、医疗保健、航空航天、军事等各个领域,其巨大成就表现在航空航天遥感和医学图像的处理方面。在航天领域,为太空探测成功处理了数万张照片在生物医学领域,为开辟了无损诊断的先河,体现出其远大的发展前景。数字图像处理是模式识别、计算机视觉、图像通信、多媒体技术等学科的基础,已经成为高等院校电子信息工程、通信工程、信号与信息处理、计算机应用与软件等学科的一门重要专业课程。

对于工科类应用型高校,主要是培养具有创新意识和竞争力、符合市场需求的实用型人才,强调学生的应用动手能力。在《数字图像处理》课程的教学过程中,我们主要从授课内容、授课方式、试验课设计以及考核方式进行了改革,培养学生学习兴趣,掌握图像处理最基本的流程和基础知识,通过主动查阅文献资料与团队协作培养学生分析問题与解决問题的能力。近几年,我们对课程教学内容体系、教学方法与手段以及教师队伍等方面的进一步建设,不断进行科技创新,将工程与项目的开发与设计理念引入课堂与试验,取得了较明显的效果,最为显著的是学生在大四毕业设计中,具备扎实的图像处理相关基础知识,能很好地完成与图像处理相关的毕业设计课题。

1 授课内容改革

随着科学技术的发展以及信息时代的到来,图像处理的新理论和新方法层出不穷,并逐步应用于实践。《数字图像处理》课程教学的侧重点和教学内容也必须发生相应变化以适应时代对应用型人才培养的需求。

1.1优化整合教学内容

在众多的《数字图像处理》类教材中,选择了西安电子科技大学许录平编写的《数字图像处理》教材为主。主要考虑到该教材内容全面、知识新颖,在内容阐述上重点突出,实践性强,有较多的实例来帮助学生理解图像处理的理论和算法。同时以清华大学章毓晋编写的《图像工程(上册)图像处理和分析》与冈萨雷斯的《数字图像处理》作为我们的辅助教材。

该教材共分八章三大部分,第一部分是数字图像处理基础,包括绪论、图像处理基础和图象变换共三章。第二部分介绍图像处理基本方法和技术,包括图象增强、图像恢复和重建、图像压缩编码共三章。第三部分讲述数字图像分析的基本原理和技术,包括图象分割和图像描述共二章。对于应用型本科教学,我们对教材内容进行适当增删、重组。并划分成如下内容模块:图像基础知识(图像采集、量化与人眼视觉系统)、图像变换、图像增强、图像恢复、压缩编码、图像分割、图像描述与图像分类识别。课程教学的主要任务是系统地讲授各个模块的基本概念、基本原理与典型方法。目的是让学生掌握图像处理的基本理论和技术,建立一个比较完整的图像处理和分析的理论体系,并了解和掌握常用的图像处理和分析技术。

根据几年的教学实践经验,图像描述与图像分类识别应该属于图像理解的范畴,作为图像工程的高一级别的内容,可以在本科阶段略讲:而图像基本概念、各种图像变换、灰度图像增强、图像平滑、图像锐化和彩色图像处理的应用性比较强,且在生活中经常会遇到此类的应用需求,应尽量详讲;频域增强、图像复原、图像编码和图像分割的地位比较特殊,这些部分的数学知识比较多,现实中具有很大应用价值,应该予以讲授。

1.2补充学课前沿知识

在每个模块的内容讲授安排上,在注重基础知识与经典算法讲授的前提下,按照由浅入深、由易到难的顺序逐渐展开,并适当补充本领域中的一些新技术、新方法、新成果。例如:在讲授图像变换模块时,其中的Fourier变换与离散余弦变换(DCT),学生在其他前期课程中有所接触,相对来说学生容易接受与理解。在这个模块我们要补充的前沿知识就是“小波变换”。小波分析是当前应用数学与工程学科中一个迅速发展的新领域,经过近十年的探索研究,重要的数学形式化体系已经建立。理论基础更加扎实。与Fourier变换、DCT变换相比,小波变换是时间(空间)频率的局部细化分析,它通过伸缩平移运算对信号(函数)逐步进行多尺度细化,最终达到高频处时间细化,低频处频率细化,能自动适应时频信号分析的要求,从而可聚焦到信号的任意细节,解决了Fourier变通的困难問题,成为继Fouri-er变换以来在科学方法上的重大突破,有人把小波变换称为“数学显微镜”。小波变换联系了应用数学、物理学、计算机科学、信号与信息处理、图像处理、地震勘探等多个学科。它在信号分析、语音合成、图像识别、计算机视觉、数据压缩等方面的研究都取得了许多具有重大科学意义和应用价值的成果。再例如:在讲授图像平滑去噪模块时,除了讲解教材的均值滤波、中值滤波算法之外,还补充基于偏微分方程(PDE)的图像去噪方法。在图像处理与计算机视觉中采用PDE方法,是近些年以来图像处理领域中的一个重要分支,因为它在图像处理中具有更强的局部适应性(Local Adaptability)与高度的灵活性(Flexibility),并且日益成为相关领域研究者关注的一个热点,在图像去噪、边缘检测与图像分割方面积累了丰富成果。

通过在课堂上适当地补充学科前沿知识,不但可以开阔学生的视野,丰富学生的知识面,让学生明白更多、更新的方法在教材之外,要学会查阅相关文献,而不要局限于书本,从而激发学生的创新意识。同时,在各个模块内容的设计中要注重知识点之间、模块之间以及本课程与其他课程之间的内在联系,既体现知识的内涵,又关注知识产生的过程。既引导学生对当前所学内容举一反三,又能将新旧知识融会贯通。

2 教学过程的改革

2.1教学方式的选择

《数字图像处理》课程是一门既具有较强理论性又具有较强实践性的学科,其中不但有基本概念与理论。还有许多具体的算法与应用举例。所以,在教学过程中采用以“多媒体”为主,“粉笔+黑板”为辅的教学方式。多媒体教学手段的采用能使教学内容由平面到立体,由抽象到具体,由文字到声音图像,这一教学手段的运用极大地增强了课堂教学的直观性、互动性,调动了学生学习的主动性。而“粉笔+黑板”的板书可以用来进行公式的推导与演算,加强学生对公式的理解与记忆。

2.2项目式教学

为了有效地培养学生的应用能力,把基于项目式的教学策略引人课堂之中,以促进学生高级认知技能和問题解决策略的形成,将理论联系实际,培养学生分析問题与解决問题的能力。这一策略的主要方法就是:在讲授教材的知识点或具体算法时,先引入一个具体工程项目,通过对此项目的需求进行分析,让学生知道我们将要学习的知识在项目的哪个环节可以得到应用。这样既可以激发学生的求知欲,又能增强学生的学习兴趣,调动学习的主动性。例如:在讲授“图像增强”这个模块时,我们就以“视频监控”项目为背景,因为受光照条件、天气变化(雨雪、大雾)等因素影响,采集的视频图像往往不清晰,视觉效果很差,但是,通过我们将要学习的图像增强方法,可以大幅度地改善图像的视觉效果,提高图像的质量,如图1所示。

由于这一真实项目引领整个“图像增强”模块的学习过程,能够有效提高学生的学习积极性,也有利于学生掌握该知识点的具体应用价值,提高学生对理论知识的综合运用能力,从而提高学生分析与解决实际問题的能力。

3 试验教学的改革

在以住《数字图像处理》的试验课中,通常都是在MatLab环境中,对课本中的一些算法进行重复性验证,试验内容简单枯燥,无法引起学生学习的兴趣,更加不能使学生将所学的知识与实际生活中的应用需求相联系。

针对上述問题,我们进行了如下改革:

(1)设置具有应用性的“学期项目”让学生开发,激发他们的学习兴趣。俗话说“兴趣是最好的老师”,只要能够激发学生的学习兴趣,就能调动学生学习的主动性与积极性。为了调动学生的学习兴趣,我们选择兼具应用性与兴趣性的试验题目——例如“基于肤色特征的人脸分割”、“基于视觉相似性的图像快速检索”、“监控图像的增强与锐化”与“运动模糊图像的恢复”等,学生根据这些“学期项目”,分成多个小组,每个成员在组内具有明确的分工与任务,各负其责,共同完成“学期项目”软件开发。

(2)在“学期项目”软件开发时,鼓励学生多采用教材之外的新理论与新方法,培养开拓创新能力。要求学生在了解试验目的前提下,自己进行方案设计,选择适当的算法。近些年以来,各种类型的图像处理新理论与新方法层出不穷,在不同的应用场合,各自的优点与缺点互不相同。鼓励学生通过互联网与学校的图书馆,查阅最新文献,形成自己的特点,培养学生的科技创新能力。在试验成功后,不但要进行试验结果与算法性能分析,还要书写软件设计方案等文档。

(3)组建图像处理兴趣小组。因为受课程学时限制,仅仅只利用课内时间,则非常有限。我们就组建了图像处理兴趣小组,让他们参加到教师的科研与项目中来,使学生在真实的项目研发中锻炼自己的综合能力。

最后,在期末之前安排两周的时间对学生的“学期项目”进行集中检查,检查的内容主要包括:①系统演示;②功能方面是否正确完整;③算法的适应能力是否鲁棒;④算法的效率是否高效;⑤程序代码是否规范;⑥试验分析报告与PPT汇报。然后,根据这些方面的检查情况,对学生的学习情况与动手能力进行评分。这是基于项目试验教学改革的重要环节,不但可以督促“学期项目”完成的质量,还能提高学生分析問题与解决問题的能力。

4 评价机制的改革

对于公选课的《数字图像处理》课程,我们采用了“笔试+课堂表现+试验考核”的一种综合考核方式。其中笔试环节重点考察学生教材上的基本概念、基本算法等知识点记忆与掌握程度:课堂表现主要考察学生的学习态度,主要包括出勤率与读书心得等内容:试验考核主要是考察学生综合应用能力,其中包括所选“学期项目”的完成质量与试验分析报告与软件设计文档。

《数字图像处理》作为一门实践性、应用性都很强的课程,在考核时,要加大平时考查在最终成绩认定中的比重,要重点突出“学期项目”完成质量在学习中的重要性,从而激发学生实践学习的主动性,提高学生的实践能力、创新能力,最终达不到理想的教学效果。

此外,由于选修本门课程学生基础各异,专业背景相差较大,采取“分层评价”也是一种应该提倡的方法。“分层评价”也是教学过程中的一个重要环节,它是根据学生的知识水平和学习能力的差异,对不同专业的学生采取不同的评价标准以及对他们的期望值。

5 结语

篇4

关键词:计算机组成原理 混合教学模式 二类本科 能力培养

中图分类号:G642 文献标识码:A 文章编号:1672-1578(2017)02-0029-02

1 前言

计算机组成原理是普通高等院校计算机专业本科生必修的核心基础课程之一,在计算机硬件系统课程群中起着承前启后的作用[1]。一方面,从部件结构的角度,计算机组成原理课程基于数字逻辑课程讲授如何将基本数字逻辑单元组合成计算机功能部件。另一方面,从计算机系统层次和指令集的角度,它引导学生深入理解程序和指令在计算机中的执行过程,并建立起完整的计算机系统整机概念,为学生学习后续课程(如计算机操作系统、计算机接口与技术、嵌入式系统等)提供必要的专业基础。

2 课程现状

在大多数高等院校的本科教学中,计算机组成原理一直存在着“难教难学”的问题。经分析,我们发现该课程 教学存在着以下几对矛盾:

(1)课程内容多而课时少。计算机组成原理涵盖了计算机系统概论,存储器、运算器、控制器、总线、输入输出系统、指令集等多项内容,而课时相对较少,在我校仅为48学时。这使得知识讲授泛而不精,学生无法深刻理解所学知识,久而久之便失去学习的兴趣。

(2)理论抽象难懂而教学方法陈旧。计算机组成原理除了讲授计算机各主要功能部件的结构、组织方式和工作原理,以及主要功能部件之间的相互联系之外,还讲授主要功能部件的设计方法。多数学生对该课程的评价是“原理难懂、概念抽象”。然而,由于课程内容多,教师授课时通常采用传统的“填鸭式”教学方法。课堂上,学生只是被动听讲和记录,没有时间进行充分思考,师生之间也缺乏互动。这种教学方法显然不利于学生对抽象难懂内容的理解和掌握。

(3)基础性原理与日新月异的应用技术之间的矛盾。如现代计算机早已不采用冯.诺依曼结构,而计算机组成原理讨论的是模型机,不涉及任何机型。书本与实际的距离造成学生误认为该课程“难懂而无用”,从而丧失学习兴趣。

(4)实验方法与学生创新意识培养的矛盾。计算机组成原理的课程实验多使用实验箱。实验箱结构无法更改,箱内部件难以更改和扩充。受实验箱的局限,计算机组成实验多为验证性实验,不利于创新意识的培养。

3 教学改革

如何对计算机组成原理课程进行改革以提高学生的学习兴趣、改善学习效果?下面,本文从计算机组成原理课程的教学内容、教学模式、实践教学这几个方面对计算机组成原理的教学改革进行有益的探讨。

3.1 教学内容改革

计算机组成原理内容多且抽象,而理论课时少,如我校计算机系,该课程只有48学时,其中理论课40学时,实验课8学时。因此,对于该课程内容的讲解不可能面面俱到,必须分重点、有侧重地去讲。站在计算机硬件系统课程群的角度上,我们对计算机组成原理及其前导、后续课程的内容进行梳理。确定该课程的重点内容为三大功能部件(即存储器、运算器、控制器)的内部结、组织方式、工作原理、基本分析和设计方法。该课程的难点则在于如何以控制流和数据流为主线,将计算机功能部件联系起来,建立整机概念(如CPU与存储器的逻辑关系,控制器如何控制每一条指令的执行过程),以及三大功能部件的设计方法。

对于计算机组成原理的前导课程(计算机基础、数字逻辑、汇编语言等)讲授过的内容,如定点数、进制转换、状态机等,可以采用课堂提问、随堂作业或测验等方式帮助学生复习和回忆。对其后续课程(操作系统、计算机系统结构、单片机接口技术等)的内容,如虚拟存储、CPU与存储器之间的连接、输入输出系统、寻址方式、流水线技术等,只讲述基本概念和原理,不作深入分析。

3.2 教学模式改革

随着计算机网络和通信技术的发展,大规模开放课程(Massive Open Online Courses,简称MOOC)在教育界日益受到关注。MOOC以“短视频+交互式练习”为学习模式,以教学互动为特点的一种大规模、开放型的在线网络课程。MOOC的优势是不受时间和地点的限制,没有先修条件[2],任何人都可参与在线学习。然而,这一优势也造成了MOOC课程的通过率不高,使得它不适用于大学必修课程。因此,一种被称为“小规模受限在线课程”(small private online course,简称SPOC)的教学模式在国内外高校悄然兴起。SPOC基于MOOC平台,但其规模小(一般在几十人至几百人之间),并对学生设置准入条件,只有达到要求的申请者才能学习SPOC课程,很好地克服了MOOC的缺点。

通常,SPOC由在线课程和翻转课堂结合而成:在线课程是由教学微视频、相关资料、在线作业、在线测验、在线讨论等组合而成,供学生线上自主学习;翻转课堂以学生为主体,教师作为组织者和引导者,引导学生就在线课程上的知识点进行汇报、讨论、答疑等。SPOC教学模式如图1所示[3]。

与传统的“以教师为中心”的教学模式不同,SPOC“以学生为中心”。在SPOC教学模式下,整个学习过程以学生为本,教师作为指导者和组织者,不断调动学生的学习兴趣,让学生自主地、探究地去学习。SPOC教学模式的特点如下:(1)线上课程按知识点分解成许多10~15分钟的微课程,方便学生进行碎片化学习;(2)每段微课程嵌入测试题,学生必须正确解答才能继续学习,因此学生看课程视频时注意力必须高度集中;(3)线上功能强大,教师可设置单元测试、批改作业、开展讨论,对学生的学习进行过程监督,对学生的学习效果进行分析;(4)线下课堂交互性很强,改传统的“教师讲授”为“师生交流”,如教师组织学生进行学习汇报和讨论,随堂测试和答疑,等等。

由此可见,SPOC教学模式顺利进行的关键在于学生,它要求学生具有较强的学习主动和能动性,能够自觉自律地在线学习并积极思考。然而,对于二类本科院校的学生而言,大部分学生的自我约束力较差,很难做到在进入课堂之前不折不扣地完成在线课程的学习任务。这是SPOC教学模式在二类本科院校推广困难的最根本原因。

受SPOC教学模式的启发,我们提出一种新的混合教学模式,即“课堂教学+线上复习”混合教学模式(如图2所示)。

在“课堂教学+线上复习”混合教学模式中,课堂教学采用多种教学方式。如启发式教学方式,通过设置疑点、提出悬念来激发学生探求知识的欲望,培养学生敢于提出问题、积极思考问题的良好习惯。此外,还采用案例化教学方式,使抽象的概念和理论变得生动具体。如,在讲述定点数和浮点数时,采用C语言中的两种数据类型――int型和float型,作为案例,并运行一段C程序来帮助学生理解“数在计算机中的表达”。在讲授总线这一章时,打开PC机,让学生了解现代计算机的总线结构。在讲授控制器时,以“模型机”为案例,对指令系统、数据通路、指令执行过程进行分析。

计算机组成原理知识点多且抽象,这就要求学生必须及时消化课堂内容。借助“在线复习平台”的在线测试和在线讨论功能,教师可以有效地督促学生及时进行课后复习。“线上复习”内容包括:难点和重点内容的微视频,基于课堂内容布置的在线作业、在线自测题、在线讨论等。其中,在线自测和在线作业必须在规定时间提交,以确保学生在下次进入课堂前完成复习内容。

3.3 实践教学改革

改传统的基于实验箱的验证型实验为基于EDA平台的设计型实验,引导学生主动思考,培养他们的创新意识和创新能力。

根据课程内容构建多层次实践教学体系。将实践教学分为“课程内实验”和“课程设计”两个层次。

课程内实验为第一层次,要求学生在Quartus和Modelsim仿真平台上设计模型机的主要功能部件――分频器、寄存器堆、存储器、运算器。控制器的设计较为复杂,涉及指令集、数据通路、指令执行过程、节拍等诸多理论,将它作为课程设计的内容之一。课程设计为第二层次,其要求较高,不仅要求学生将控制器和在课程内实验中完成的各功能部件进行组合,在仿真平台上完成一个单周期处理器的简单模型机的设计,而且要求学生将模型机下载到FPGA板上进行测试。

考虑到计算机组成原理课时少,我们采用SPOC模式进行实践教学,在网上实验教学微视频和与模型机设计资料,要求学生在上实验课之前进行在线学习,鼓励学生带着问题进入实验室与教师或助教进行探讨。为保证学生有充裕的时间进行课外学习和实验,我们在计算机组成原理的开课初期就将课程设计任务布置下去,同时开放硬件实验室,并定期开展网上讨论。

4 结语

2015年,我们依靠学校的网络教学平台构建了计算。机组成原理课程的在线复习平台。从2015年的教学实践来看:“课堂教学+线上复习”混合教学模式提高了学生的学习主动性和自律性,增强了学习效果;教学实践的内容和教学模式的改革提高了学生的学习兴趣,增强了他们的实际动手能力。

课程教学改革是一项长期工程,计算机组成原理课程中存在的教学问题也不是仅凭一两次教学改革就可以完全解决,如计算机组成原理课程存在的教材更新滞后,教学内容相对陈旧等问题[4]。这需要授课教师密切关注计算机系统领域内的新技术、新成果,不断更新自身的知识结构,争取更好的教学效果。

参考文献:

[1] 姜姚爱红,武俊鹏,等.“计算机组成原理”教W改革实践[J]. 计算机教育,2013(2):9-13.

[2] 黄岚,袁钢,程新荣,等.基于SPOC理念的计算机组成原理课程互动教学研究[J].计算机教育,2015(第13期):15-18.

[3] 宋晓玲.基于SPOC的高职计算机基础课程混合教学模式探究[J].当代职业教育,2016年第1期:20-22,48.

篇5

关键词 多媒体技术;应用型本科;项目驱动

中图分类号:G642.3 文献标识码:B

文章编号:1671-489X(2014)24-0118-02

Explorations of Multimedia Technology Course during Application-

oriented Undergraduate Education//YUE Hongyuan

Abstract With the rapid development of multimedia technology, the construction and improvement of Multimedia Technology course is particularly important. In this paper, we focus on the characteristics of application-oriented colleges and analyze how to set the teaching goals of the Multimedia Technology course, as well as from three aspects,such as Textbook Construction, teaching reform and assessment methods,analyze the problems and propose the solutions, to get the further improvement of the course construction.

Key words multimedia technology; application-oriented undergraduate;

project-driven

1 引言

多媒体技术课程作为南京工程学院数字媒体技术专业学生的核心课程,在人才培养和学科建设上占有重要的地位。而南京工程学院带有鲜明的应用型大学的特色,是全国应用型本科院校专门委员会主任委员单位,是国家“卓越工程师教育培养计划”“CDIO工程教育模式改革研究与实践”首批试点高校之一,是江苏省协同创新中心培育建设单位。所以,多媒体技术课程的建设需围绕应用型本科这个鲜明的特色开展。

要建设好多媒体技术课程,就要搞清楚什么是应用型本科,应用型本科的特点是什么,以及在此基础上多媒体技术课程教学目标如何设定,多媒体技术课程教学目标围绕应用型本科如何开展实施。

应用型本科教育是随科技发展和高等教育由精英教育向大众化教育转变过程中形成的一种新的教育类型,它是相对于理论型本科教育实用技术型教育而言的。应用型本科教育是以培养知识、能力和素质全面而协调发展,面向生产、建设、管理、服务一线的高级应用型人才为目标定位的高等教育。

应用型本科教育的基本特点[1]主要体现为:定“性”在行业,定“向”在应用,定“格”在复合,定“点”在实践。即:1)价值取向体现行业性;2)设置目标体现应用性;3)课程设置体现复合性;4)培养过程体现实践性;5)人才评价体现多元化。

基于应用型本科的特色,多媒体技术课程的教学不能仅仅是使用软件工具对媒体素材的操作,也不能是纯理论的学习,所以本课程的教学目标是通过教学,使学生掌握多媒体技术中的基本概念、常见编码和压缩方法以及音视频编码的国际标准;同时,使学生在了解多媒体数据格式的基础上,掌握数据分析软件和编程软件的使用方法和基本技巧,掌握音频、图像、视频数据的基本处理方法,并具备独立开发多媒体相关产品的能力。

要达到课程的教学目标,就必须解决多媒体技术课程和应用型本科如何衔接配合的问题。下面主要从教材建设、教学改革和考核方法这三个方面进行探讨。

2 教材建设

笔者教授多媒体技术课程也近十年,期间换过四、五本教材,深切地感受到选择一本合适教材的困难。社会上的教材大致分为两类,一类是针对高职高专的,以软件应用为主,如Photoshop、Authorware、Flash等;另一类针对普通本科,以对音视频压缩和编码等的原理教学为主。而针对应用型本科的优秀教材却不多,所以编写一本适合应用型本科生的教材便迫在眉睫。

以项目驱动的方式来编写教材最能体现应用型本科的特点[2]。而选择一个什么样的项目作为驱动则关系到整本教材的内容和风格。从教学经验上看,多媒体技术的特点是相关技术多,内容繁杂。而用一个项目作为红线将这些技术串联起来,可以使得知识点脉络清晰,前呼后应,使得学生学习不再是知识点的简单堆砌,而是知识点的关联应用,让学生知道完成什么样的任务需要什么样的知识。

多媒体技术主要包含数字图像以及颜色空间原理、基本有损无损压缩技术、数字声音的压缩编码技术、数字图像和视频压缩编码技术以及多媒体网络传输技术等。所以,以视频会议系统作为项目驱动便显得尤为合适。视频会议系统是指两个或两个以上不同地方的个人或群体,通过现有的各种电信通讯传输媒体,将人物的静、动态图像、语音、文字、图片等多种资料分送到各个用户的计算机上,使得在地理上分散的用户可以共聚一处,通过图形、声音等多种方式交流信息,增加双方对内容的理解能力。可见,多媒体技术课程所涉及的技术在视频会议系统中都有体现。

该教材建设已经经过论证到了实施阶段,相信不久的将来就会与读者见面。

3 教学改革

多媒体技术课程涉及的学生多,技术面广,难度深,很多章节都可以拿出来作为一门独立的课程来上。所以,在教学中因材施教,将知识点系统化、难度适当化,成为教学效果好坏的关键。

在南京工程学院,多媒体技术课程不仅是计算机科学与技术(多媒体方向)(即现在的数字媒体技术专业)学生的专业必修课,而且是网络工程方向、软件工程方向、嵌入式方向、软件测试方向的必修课。上课的形式多为二合班或三合班,教授的内容和考核的方式一样。统计近九年的多媒体方向和其他方向的多媒体技术课程平均成绩,如图1所示。图1中,系列1表示的是多媒体方向的平均成绩,系列2表示的是其他专业方向的平均成绩。分析可得,近年来专业方向与非专业方向的成绩有拉开的趋势。

如何让非专业方向对本课程感兴趣,提高学习成绩,成为要面对的问题。这就要求教师开阔自己的视野,将多媒体技术在不同专业方向中的应用介绍给学生,激发学生的学习兴趣。例如:压缩算法涉及软件编程,多媒体通信涉及网络传输,视频会议系统产品化涉及嵌入式。所以,因材施教不是知识点难易程度的选择,而是针对不同对象的兴趣点的选择。

针对课程知识点散和广的特点,在教学中始终贯穿一条主线――项目驱动。在课程开始阶段便布置项目任务,即视频会议系统的设计与实现。要完成该项目,首先要做好功能模块的分析,然后每一个模块都对应一个教学单元。例如:可以将功能分为语音通话、视频聊天等大的模块,语音通话可以再分成声音压缩与传输模块,视频聊天可以再分成图形和图像的数据表现与颜色空间、图像压缩标准、视频压缩技术和标准、多媒体通信等模块。每个教学单元完成一个模块,整个教程下来便完成整个项目。

针对课程知识点难度深的特点,教学中在把握好知识点难度的同时加大实验的比重,使学生通过编程方法来实现数字媒体的应用,让学生对知识点有更直观、更生动的理解。由于音视频压缩的国际标准内容庞大且复杂,用C语言实现困难且代码难以理解,所以在编程软件的选择上使用更易上手的仿真软件MATLAB,可以使学生忽略细节而更关注方法。MATLAB是一种用于数值计算、可视化及编程的高级语言和交互式环境。而音频可以理解为一维向量,图像可以理解为二维矩阵,视频可以理解为加上时间维度的三维矩阵。所以,使用MATLAB是最佳选择。

4 考核方法

由于实验学时的比重由最初占总学时的四分之一到如今的二分之一,所以,在考核的时候平时成绩所占比重应有所增加。民国的时候,有的教师不用考试,期末直接给成绩,这看似荒谬,实则是教师对每个学生平时学习的深入了解。如今,大学已是普及教育,要求面对众多学生的教师对每个学生做到心中有数,恐怕不太现实,而期末的一纸试卷对习惯了临时抱佛脚的学生来说又不是大问题。从这些年的考试情况看,凡涉及实验内容的考题往往比简答题、计算题的得分要差得多,所以加大平时实验的考核便显得尤为重要。首先,要增加实验成绩占总成绩的比重;其次,要将实验验收做到课程设计化,使得每个学生对基本原理会编码,对音视频国际标准代码看得懂、会改写、会应用。

5 结束语

多媒体技术发展日新月异,多媒体技术课程的建设和完善只有进行时,没有完成时。针对应用型本科的特色编写有针对性的教材,针对不同专业方向的学生因材施教,针对最终的考核加大实验的比重,这些都是完善多媒体技术课程建设的有效方法。今后,还要根据多媒体技术的发展来进一步补充和完善课程建设的内容和方法。

参考文献

[1]史秋衡,王爱萍.应用型本科教育的基本特征[J].教育发展研究,2008(21):34-37.

篇6

关键词:CDIO工程教育理念;课程整体设计;项目教学

一、引言

我国正处于经济转型的关键时期,转变经济发展方式,刻不容缓,必须依靠科技和教育进步来推进,软件产业的发展有着举足轻重的影响。目前,除了示范性软件职业技术院校设有软件专业外,在全国1184所高职院校中8 0%以上的学校都开办了计算机专业,但是培养出能够适应企业需要的学生却很少。学生毕业后不能很快就业,需通过深化培训后才能就业。然而,前程无忧等国内专业的人才招聘网站的数据表明,IT职位需求量最大,接近总量的30%,这又表明IT人才供不应求。一方面是软件外包业飞速发展,软件工程师需求量大,另一方面是学生实践能力的欠缺。高职院校的软件开发类课程如何组织高效的教学,培养出企业真正需要的人才,在就业中体现职业教育的优势,已成为亟待解决的问题。针对这些问题,根据CDIO工程教育理念,结合我院实际教学情况,我对软件类课程的教学内容和教学方法进行了深层次的研究和探索。下面将以Java程序设计课程为例详细阐述如何在CDIO理念指导下组织教学。

二、CDIO工程教育模式的创新启示

近年来,CDIO工程教育模式成为国际工程教育改革的最新成果,它是由美国麻省理工学院联合瑞典查尔姆斯技术大学、林克平大学以及皇家技术学院等4所高校,共同开发的一种全新工程教育理念和实施体系。 CDIO代表构思(Conceive)、设计(Design)、实现(Implement)和运作(Operate)。它以工程项目的整个生命周期为载体,让学生以主动的、实践的、课程之间有机联系的方式学习课程。该理念是“做中学”、“理实一体化”和“基于项目的教育和学习”的集中概括和抽象表达,其注重培养学生的工程能力,包括个人的工程科学和技术知识,学生的终生学习能力、团队交流能力和大系统调控等方面的能力。

CDIO工程教育模式对高职高专软件类应用型人才培养模式创新启示为:以市场需求为背景、以项目为主线、以学生为主体、以教师为引导的理论联系实践的课程架构、项目实践模式和课程评估标准。

三、课程整体设计

1、“教学做一体化”

课程内容上我们将软件企业中的实际工作作为教学的重要组成部分,将知识、理论和实践集成为教学计划的规定内容,通过“听中学/看中学/做中学”使学生的动手操作能力与文化理论学习能力同步发展。

2、“学习过程与工作过程一体化”

按照职业岗位的工作过程及要求组织教学内容,以职业活动为导向,以完成岗位工作任务为载体,以真实(或仿真)的工作场景开展教学活动,将学生的学习过程与企业职业岗位的工作过程紧密结合,实现学习任务与工作任务密切对接,体现教学过程的职业性。

3、“员工、师生身份一体化”

CDIO理念提倡学生自主学习,要求教师的主要职能由“教”转变为“导”。注重学生的主体地位,注重教师的主导地位,师生共同参与到一体化教学过程之中,一起探讨理论知识和解决实践中的各种疑难问题。这就要求教师既能动口、又能动手,既有理论知识、又有实际操作能力。教师应成为学生心目中的工程师的榜样。

四、多层次项目设计的教学模式

根据CDIO的构思、设计、实施、运行几个工程教育环节,并结合软件类专业课程的项目化特点,我们从中总结出了项目构思与设计、项目实战、客户反馈、项目汇报与总结4个教学环节,针对这四个环节设计的项目都是模拟企业真实项目而来的。

1、项目构思与设计

为了减少理论讲解,增加实践课时,我们根据项目内容组织知识点,以理论够用为原则遵循“回避难点、轻松入门、注重实践”的教学理念。我们将Java教学组织分为三级模块(见图1),一级模块为任务驱动教学,二级模块为项目载体实训,三级模块实战历练,保证学生达到学以致胜的目的。 下面具体说明教学设计机制。

将以Java技术实现的购物管理系统这一高度仿真企业实际工作的项目作为理论知识学习的项目载体。根据理论知识点和技能点将此项目分解为对应的子任务,要求学生学习完理论知识点和技能点后能够独立完成子任务(如图2所示)。最终将所有子任务串联实现整体项目,即称之为以项目为载体的任务驱动式学习。

实战历练阶段是Java课程整体实训部分,用于检验整个教学效果和进行学生动手能力培养的关键阶段。在项目载体完成以后,要求学生以5-6人一组为单位的开发小组进行拓展式项目实战。教师此时作为客户提出具体软件需求,由学生担任项目设计和实施者。实战演练项目的评价是学生总体课程评价体系的重要组成部分。

2、项目实战

这是在课程贯穿项目设计完成的基础上开展项目设计制作的环节。学生开始进行分组和团队合作。每组推选出一名小组长,作为确定项目经理。项目经理组织项目组成员进行需求分析、软件设计、编码、功能测试等工作,组员分工协作,也可独立完成某一新知识型任务。为了避免学生在多个项目中重复担任某一职责,要求每位学生在多个项目中从事不同的岗位。这样既

能让学生有机会扮演不同工作任务的角色,又能真实体现实际工作情境,对于培养学生协同工作能力大有好处。对于知识面较广、难度较大的任务,可通过小组讨论来解决,也可以咨询教师,在教师团队的指导下完成。在这个过程中,教师担负着答疑和指导的任务,鼓励学生们用不同方法完成任务,针对具体情况提出改进建议。通过这种方法,所有学生共同参与,协作完成,提高创作热情,锻炼交流与合作能力、学习和思考能力、解决问题和创造性思维能力。

3、客户反馈

在项目进行到中期的时候,我们一般都安排反馈环节,让每个工作小组介绍项目进展情况和问题解决情况。除项目组以外的同学和教师扮演客户角色对项目进行评价。反馈之后,学生会看到自已作品的不足,自觉按照客户需求对作品进行修改。这种客户反馈是在培养学生客户服务的意识,锻炼学生工作的耐性,细致和考虑问题的全面性与多样性。

五、教学效果

采用 CDIO 模式开展项目教学取得了明显效果,主要体现为:

1、提高了教师动手能力

为了设计出符合CDIO教育理念的贴近企业工作需求的课程案例及教学项目载体,任课教师们通过深入企业一线实践,参与实际项目开发等方式积累了丰富的项目开发经验,提高了实践操作技能和动手能力。

2、培养了学生的工(作)程能力

在重实践性和探索性的教学理念下,以项目为主线组织教学内容将项目作为知识学习与技能训练的载体引导学生进入实际的工作环境,切实解决实践问题,初步掌握工程项目的一般设计流程,达到理解、消化、吸收的目的。学生团队多次申报成功并圆满完成省级大学生创新计划项目,获得评审专家的好评。

3、提高了学生的自学能力

CDIO 教育理念以工程项目为中心,学生在项目制作中不断阅读、查找、研究提供的学习资源,带着问题寻找答案,提高了学习效率,锻炼程序设计综合能力和自主学习能力。在“全国软件专业人才设计与创业大赛”Java高职组别中多次获得省级与国家级大奖。

4、培养了学生的团队交流能力

教学采取小组合作教学模式,在项目实现、运作之中,小组成员要进行项目总结交流,实现经验分享,拓展所学知识从而提高团队协作能力,增强了就业能力。■

参考文献

[1]易着梁,黄伟.基于CDIO教育模式软件技术专业项目教学实践.计算机教育,2011(11):140-143

篇7

摘要:C语言是计算机程序设计入门教学中最流行也较难学的编程语言之一。本文介绍的Ch是一个面向交互式教学的跨平台C/C++解释计算环境,是一个完整的C语言解释器,支持最新C语言标准C99中大部分的新增特性以及C++的类,由交互式命令外壳(command shell)和教学专用且界面友好的集成开发环境(ChIDE)两大模块构成。Ch支持计算数组(computational array),提供了图形绘制库和高级数值函数库,能够方便快捷地解决许多工程和科学方面的复杂问题。在Windows系统中,Ch计算环境支持常用的Unix和Linux命令,帮助学生在熟悉的Windows环境中学习Unix和Linux。Ch还可以作为引擎脚本无缝地嵌入到编译的程序中,实现柔性编程。本文最后概括性地介绍了笔者在美国加州大学戴维斯分校多年教学实践中开发并使用的一套基于Ch的C程序设计教学平台。教学实践表明,使用这个平台在相当程度上提高了计算机程序设计教学的实用性、授课效果和学生学习的积极性,帮助学生充分理解和掌握计算机程序设计这一工程和科学领域的重要基本技能。

关键词:计算机程序设计教学;C语言;C解释器;C++解释器;数字计算;嵌入式脚本计算

中图分类号:G642

文献标识码:A

1引言

编写计算机程序解决复杂的工程和科学问题是工程师和科学家的基本技能之一。C语言是在工程和科学方面应用最广的编程语言之一,事实上,它是很多工程师和科学家的首选。C语言可以在各种计算机上运行,其中包括微控制器、微型计算机、手执设备、个人电脑、工作站乃至超型计算机。在2005年制造的90亿个微处理器中,只有不到2%的处理器用于新的个人电脑和工作站中,剩余的88亿个则用于工业机器、医疗设备、交通灯控制器和家用电器等的嵌入式系统中。C是编写诸如此类嵌入式系统硬件接口程序的标准语言,同时也是计算机编程入门教学中应用最广的计算机语言之一。但众所周知的是,C语言较难学,熟练掌握更需要相当长的时间。本文介绍的Ch是跨平台的C/C++解释计算环境,对于提高计算机编程入门教学具有良好的效果。

2背景

在过去的十多年中,编程范例发生的转变包括从非移植性特定语言编程到可移植性快速应用开发,从私有语言到开放语言,从系统编程语言到脚本语言。当初设计和开发Ch的主要目的是为了更有效地进行C语言计算机程序设计入门教学,同时兼顾智能机电系统方面的科研和工程应用[1][2]。经过十多年的教学实践和工程应用并不断完善,Ch现已从一个简单的教学和科研工具演变为一个可移植跨平台且通用简便的计算环境[3],并得到教师、学生、科研人员和工业界的广泛认可。经过十多年教学经验的积累,目前已经形成了以Ch为核心的C语言程序设计课程的教学平台[4]。

然而,Ch并不是什么全新的语言,Ch设计严格遵循了C语言标准,是C语言的超集。作为一个完整的C语言解释器,Ch支持1990年通过的ISO C89标准[5]的所有特性。在基于对象的编程方面,Ch也支持C++中的一些主要特性。我们为数值计算而扩展C语言的工作与ANSI C语言标准委员会为修改C语言标准所做出的努力是一致的。自从我1993年参与ANSI X3J11和ISO S22/WG14 C语言委员会修订C99后,Ch受益匪浅。很多诸如复数(complex number)[6]和可变长数组(variable length arrays, VLAs)[7]等原先在Ch中实现的新特性都添加到了的最新C语言标准C99[8]中。与其他大部分C语言编译器相比较,Ch支持更多C99的新增特性。我们鼓励C程序员使用这些新特征,诸如复数、可变长数组、IEEE 754浮点运算和泛型数学函数(type generic mathematical functions),因为它们可以极大地简化很多编程任务。

C语言最初是为系统编程而设计开发的,因此它在工程和科学应用方面存在一些缺陷。Ch是一个C/C++解释器,可用于跨平台脚本、高级数值计算和图形绘制、shell编程和嵌入式脚本。Ch借鉴了很多其他语言和软件包的特性和创意,它和其他一些语言和软件包的关系见图1。Ch的以下主要功能是一般的C语言编译器所无法提供的。首先,Ch可以解释C语言程序,在一台机器上开发的C语言程序可以在无需编译和链接代码的情况下在另一台机器上由Ch解释执行,这对脚本应用来说是非常理想的,比如通用网关接口(Common Gateway Interface,CGI)处理网页上的已填好表格。解释器对C语言计算机编程的教与学双方都是非常有帮助的,比如,运行时的出错信息能够更方便地指向源代码,使初学者更容易发现程序中的错误。Ch还能解释使用面向对象编程特性的C++程序。其次,一些应用于工程和科学方面的语言(如MATLAB和Mathematica)所具有的高级数值计算和图形绘制特性也被Ch扩展到C语言上。Ch中的一些数值计算方面扩展特性已添加到C99中。再次,Ch是一个具有高效的shell编程特点的超高级语言(very high-level language, VHLL)。有些需要编写数千行C语言代码才能解决的问题,Ch代码只需寥寥数行即可完成。此外,Ch还可以无缝地嵌入到用C或C++语言编写的编译应用程序中,使应用程序可以用C/C++脚本柔性编程,极大地扩展了应用程序的功能。本文将从教学的视角阐述Ch的这些独特功能。

3Ch是一个跨平台的C/C++解释器

在处理某些任务时,C语言功能及其编译/链接/运行/调试等繁琐过程不尽完美且效率不高。随着计算机硬件越来越便宜,计算速度越来越快,Ch作为跨平台C/C++解释器,其在程序设计效率、柔性及成本方面的优势已被越来越广泛应用,特别是在C语言程序设计教学上。

作为一个完整的C语言解释器,Ch支持ISO C89标准的所有语言特性和标准库。通过Ch软件开发包(Ch SDK),Ch可以支持C/C++函数库。比如,Ch支持POSIX、TCP/IP socket、Winsock、Win32、X11/Motif、GTK+、OpenGL、ODBC、SQLite、CGI、LAPACK、LDAP、PCRE、Gnome Libxml2、甲骨文公司的XML XDK、NAG统计库、用于计算机视觉的Intel OpenCV、用于图像处理的ImageMagick、用于信号处理的SigLib、美国国家仪器有限公司的NI-DAQ和NI-Motion等。

此外,Ch被设计成与平台无关,它可以在配有不同计算机硬件和操作系统的不同类型计算环境中运行,其中包括Windows、Mac OS X、Linux(x86、PPC、ARM架构)、Unix,FreeBSD和实时操作系统QNX。Ch跨平台特点可以使C/C++程序在多种操作系统上跨平台解释执行,而无须繁琐且与平台相关的编译过程。在一个平台上开发的程序可以在其他任何一个平台上运行。

在辅助初学者学习计算机编程方面,Ch有很多专门开发的警告和出错提示信息,而不用如段故障(segmentation fault)和总线错误(bus error)之类含义模糊且令人费解的出错提示信息。

3.1交互式解释执行C/C++语句和表达式

C语言的所有语句和表达式都可以在Ch命令外壳(command shell)中交互解释执行并即时地显示在屏幕上。如图2所示,使用交互调用函数printf()得到“Hello, world”的输出。注意,在命令模式中执行相应语句时,C语言程序中语句末尾的分号是可省略的。上述执行操作所调用的函数printf()中没有分号。Ch shell中的默认提示符是可配置的。为简易起见,下文关于Ch shell的命令行叙述中只显示提示符>,而不列出完整路径。

Ch shell会对输入的C语言表达式直接进行求值,并将结果显示于屏幕上。比如,输入表达式1+3*2,输出的结果为7,如图3所示。

任何有效的C语言表达式都可以在Ch shell中求值。因此,把Ch当作计算器使用也是相当方便的。再举一例,在提示符后声明变量,接着在随后的计算中使用该变量,如图4所示。

以上C语句中,i是一个4字节的int型变量,i的整数值30将以十进制、十六进制和二进制数显示。Ch shell还可以方便地检查C语言结构或C++类的对齐,如图5所示。

本例中的int和double虽然分别占4和8个字节,但为了对齐,结构体s的int和double两个字段共占16个字节,而不是12个。

3.2交互式解释执行C/C++函数和程序

除了C语句和表达式之外,C语言的函数和程序也可以在Ch shell中进行交互式解释执行。C语言标准库中的所有函数都可以进行交互式执行,也可以在用户自定义的函数中使用。比如,在交互式解释执行如图6所示的代码:

在随机数值生成函数rand()中种入时间值srand (time(NULL))。在命令行中定义并调用的函数add()依次调用了泛型数学函数sin()。

函数文件中定义的函数也可被其他程序和表达式在命令外壳直接调用。Ch的函数文件是一种扩展名为.chf的文件,此类文件只含有一个函数定义。函数文件名和函数定义名称必须是相同的。

比如图7中的程序addition.chf就是函数addition()的函数文件。函数addition()可以用于程序或如图8所示的命令外壳中。

C/C++程序无需编译即可直接进行交互式执行。比如,要运行图9中的“hello.c”程序,只要在Ch命令shell中输入命令“hello.c”,得到的结果就是“Hello, world”,如图10所示。

Ch由上述命令外壳(command shell)和一个集成开发环境(Ch Integrated Development Environment,ChIDE)两大模块构成。ChIDE允许用户在IDE中编辑、调试或运行C/C++程序,其用户界面支持包括中文在内的30多种语言。ChIDE中含有现代IDE中常用的大部分功能。比如,它具有自动语法高亮显示,可帮助用户发现程序的一些语法错误。用户可设置断点,单步运行程序,在程序运行过程中监视变量和表达式值并修改变量值。ChIDE操作简便,是专门为教师授课和学生学习而开发的。ChIDE的特征和布局都是针对那些没有任何编程经验的初学者而设置的。比如,如图11所示,程序func.c连续或单步运行停在第9行时,可以在ChIDE中间的调试窗格内监控局部变量和全局变量的值。变量a和i以及表达式2*g的值可以通过将相应命令输入右下角的调试窗格中获取。教师课堂演示时,还可以方便地改变ChIDE中程序的字体大小。

4Ch的高级科学计算功能

科学数值计算并不是C语言设计的最初目的。比如,在C89中就很难处理多维数组。C99为C语言添加了可变长数组和复数,使得数值计算得到极大简化。Ch进一步扩展了C99的数值计算功能。在Ch中,数值分析方面的复杂问题往往只需调用一个函数即可解决。本部分将阐述Ch在科学计算方面对C语言进行的扩展。这些数值扩展极大地简化了工程和科学中复杂问题的编程。很多工程和科学上的实际问题都可以在课堂演示,在课后练习和项目训练中轻松解决,提高了教学的实用性,并极大地激发学生对计算机编程的兴趣和学习的积极性。

4.1高级数值计算

Ch支持作为一类对象(first-class)的计算数组(computational array)。计算数组可以由类型声明符array进行声明。一维的计算数组作矢量处理,而二维数组则作为线性代数矩阵处理。对计算数组进行运算的操作符重载遵循线性代数的运算规则,如图12所示。

本例中,函数transpose()和inverse()分别用于计算转置矩阵和逆矩阵。对关键词array的处理方法跟C99中关键词complex的相同。在程序中使用计算数组时,应该包含头文件array.h。如果程序中没有包含头文件array.h,那么标识符array仍可作为变量名使用。

Ch含有针对科学数值计算的高级数值分析函数库。比如,线性方程组Ax=b,其中:

通过图13中的程序linsolve.ch调用函数linsolve()进行求解,输出结果如图14所示。

头文件numeric.h包含头文件array.h和数值函数的函数原型。函数linsolve()的算法基于广为应用的开源LAPACK,直接调用了LAPACK中的相关函数。用户无需担心用快速精确的数值算法进行的潜在的优化。通过高级数值分析函数库,用户只需调用一个函数就能解决诸如LU分解、QR分解、伪逆、奇异值分解、矩阵的特征值和特征向量、非线性方程、常微分方程等复杂数值分析问题。

这些高级数值函数对解决工程和科学类后续课程的复杂问题也是非常有用的。

4.2二维和三维图形绘制

图形绘制对数值结果的可视化和解释是极为重要的。C语言默认不支持图形绘制,C语言程序员往往用程序先生成一个数据文件,再使用如Excel之类的软件包,用数据文件中的数据绘制图形,这一过程对算法开发来说很不方便。Ch在C/C++的框架下,为二维和三维图形绘制提供了几乎最简捷的方案。使用图形库(graphical library)的绘图函数(plotting functions)或绘图类(class CPlot)成员函数(member functions),可以在Ch中方便地生成二维和三维图形。Ch可以用数据数组、数据文件或函数生成图形,将其显示于屏幕,保存为不同格式的图片文件,或以适当图片格式输出到标准输出流,并使用Web服务器在Web浏览器上显示。

下面三个例子分别展示了在Ch中绘制二维曲线、三维曲面和三维曲线的简捷功能。

图15所示为函数sinc(x)的二维曲线图形:

x的取值范围为[-10,10]。该图形是如图16所示的Ch程序sinc.cpp通过调用绘图函数fplotxy()实现的。

绘图函数fplotxy()的函数原型为:

Int fplotxy(double func(double), double x0, double xf, int num,

char *title, char *xlabel, char *ylabel);

其中变量func是拟绘图的函数,其自变量区间为[x0, xf],num为绘图取点数,title为图形名称,xlabel和ylabel分别为x坐标轴和y坐标轴的标识。

Ch的绘图函数是通过绘图类(class CPlot)实现的。比如二维曲线绘制函数fplotxy()调用方式:

fplotxy(func,x0,xf,num, title, xlabel, ylabel);

可以用绘图类及其成员函数实现如下:

CPlot plot;

plot.func2D(func,x0,xf,num);

plot.title(title);

plot.label(PLOT_AXIS_X, xlabel);

plot.label(PLOT_AXIS_Y, ylabel);

plot.plotting();

很多别的Ch绘图类的成员函数可以用来绘制不同的图形并达到各种各样的功能。

同样地,三维曲面也可以由Ch绘图函数简捷地生成。图17为数学函数sinr(x, y) 形成的曲面,sinr(x, y)为:

,其中该曲面绘制可由如图18所示的Ch程序sinr.cpp通过调用绘图函数fplotxyz()来实现,其中x在区间[-10, 10]取点数为80,y在区间[-10, 10]取点数为100。

绘图函数plotxyz()可以用来绘制三维曲线或表面。图19是由如图20所示的Ch程序helix.cpp调用plotxyz()生成的,其中t从0到10π的曲线段上含有300个点。在绘图函数plotxyz()中,前三个数组变量与参数函数x、y和z相对应,第四个变量为三维曲线取点数,其他变量与函数fplotxy(), fplotxyz()相同。

使用绘图函数的程序也可以用C++图形库(SoftIntegration Graphical Library,SIGL)[9]在C++编译器中进行编译和链接。比如,图16、18和20所示的程序可用微软的Visual C++来编译、链接SIGL图形库产生可执行的文件。ChIDE集成开发环境不但可以直接解释执行这些调用绘图函数的程序,而且还能够通过编译和链接的方式产生可执行的文件来执行这些程序。

以高级图形绘制和数值函数为基础,大量教学和工程应用工具包可被开发出来。现已开发的工具包包括控制系统工具包[10]和机构设计和分析工具包[11]。图21所示动画是一位学生为机构设计课程项目训练所开发的快速回归机构[12],只需短短34行代码即可实现该机构的数值和图形输出以及仿真。

5Ch命令外壳(Command Shell)和Shell编程

随着计算平台的日趋多样化,为学生提供除Windows的更多跨平台实践的机会就显得越来越重要了。Unix和Linux也是学生需要学习的重要操作系统。计算机的图形用户界面(graphical user interface,GUI)固然好用,但是在命令shell中却可以更简便地完成一些诸如建立多个目录之类的任务,而在处理多平台任务时更是如此。不同平台采用的图形用户界面往往是不同的。此外,shell编程的脚本可以高效地自动执行重复任务,比如系统管理、回归测试、快速编程。常见的Windows MS-DOS和Unix shell(包括Bourne shell,C shell和Korn shell)的语法都是非常繁杂的。和低级汇编语言的符号记忆形式类似,MS-DOS和Unix shell元字符组(metacharacters)的特殊含义很难被记住。因此,用MS-DOS和Unix shell编程语言编写的大篇幅shell脚本较难读懂,也不容易进行修改和维护。再者,MS-DOS和Unix shell编程语言的功能也十分有限。

Ch是一个无需中间字节码(bytecode)的解释器,它也是一个命令外壳(command shell)。Unix系统下,处理Ch shell命令的方法与Bourne shell和C shell之类的常规Unix shell采用的方法是相同的。跟其他Unix shell一样,Ch也能当作login shell使用。大部分Unix命令都是用C语言编写的。Ch为C语言和shell进行了几乎天衣无缝的衔接。在Windows系统下,Ch支持Unix和MS-DOS规范。作为一种可移植命令shell,Windows系统下的Ch包含了Unix shell中常用的200多个Unix命令,比如vi、ls、mv、grep、find、awk、sed和wget等。这样有Windows操作经验的学生可以在熟悉的环境中学习Unix和Linux,自然地过渡。Ch可用于交互式命令解释和shell编程设计。从shell编程的角度看,Ch是一种超高级语言(very high-level language,VHLL),并同时保留了shell的特性,比如命令行编辑、命令替换和别名等。作为命令外壳,Ch的大部分特性与常规的Unix shell相同。在命令shell和shell编程方面,Ch被设计得尽量接近C shell,但不完全相同。Ch shell是一种真正意义上的C shell,并且在Windows、Unix和Linux中都可以使用,因为Ch是C语言的超集,用Ch编写脚本更高效,而且易于维护。

Ch具有现代命令shell该拥有的大部分特性,其中包括历史替换、快速替换、文件名替换、管道、输入和输出重定向、别名、后台运行命令、敲tab键补全文件名和命令,以及使用键盘上的方向键重现命令。这些特性大部分都与C shell和Bourne shell兼容。

在Ch shell中,用户可以在shell的提示符后面输入命令。这些命令包括编译的可执行文件、shell脚本、C语言程序。例如,图22所示的这条命令便可建立dir1和dir2两个目录。

如果要在其他脚本诸如Bourne shell中执行Ch脚本,可以在Ch程序首行含有以下组织行:

#!/bin/ch

如图23所示为Ch脚本script1,该脚本的文件名为script1。在Ch脚本中主函数main()可省略。该脚本由替换命令`uname`生成的字符串与程序预定义的字符串“Linux”和“windows32”相比较来决定程序运行在什么操作系统上,字符串变量s1,s2的值“dir1”和“dir2”则作为mkdir命令的变量。如果该脚本在Linux或Windows操作系统中运行,就会建立dir1和dir2两个目录;如果运行在其他操作系统,则会产生出错信息。

6Ch作为嵌入式脚本引擎

设计软件系统时采用嵌入式脚本柔性编程已越来越流行。在嵌入式脚本的编程范例中,解释器或脚本引擎被嵌入到编译的应用程序中。应用程序可以通过嵌入的解释器执行脚本代码,该脚本代码还能依次调用应用程序和其他函数库中编译的函数并与其共享数据。虽然强大的可嵌入解释器可以极大加快软件开发和部署的速度,但这种柔性编程规范的方法和功能还有待进一步开发和充分利用。

比如,如果将C/C++解释器嵌入到一个自控程序中,对硬件和软件进行测试,则质保工程师就能用C/C++测试脚本调用编译的C函数和C++成员函数。编译的应用程序仅通过调用不同脚本就可用来测试不同产品,这些调用的脚本可以从图形用户界面输入或从文件调入。再如,嵌入式解释器可以为不同客户和应用定制产品,在不改变标准产品的情况下,可根据客户的具体需要给应用程序加入额外功能。应用程序在特定的点调用和执行脚本就能实现客户期望的具体行为。

用于嵌入式脚本的可嵌入解释器有好几种,但最理想的情况是,应用程序的编译代码和脚本代码使用同种编程语言。否则,在编译的二进制空间和脚本空间之间共享数据就会困难而复杂。

C和C++是最常用的编译应用程序开发语言。对于用C/C++编写的应用程序来说,嵌入一个C/C++解释器是最合逻辑的选择,如图24所示。用C/C++编写的应用程序和C/C++脚本均可无缝地共享内存、函数和头文件。

嵌入式Ch具有大量可用于嵌入脚本的应用编程接口(Application Programming Interface,API),比如可在编译的应用程序中跟踪和分析C/C++脚本代码。单个嵌入的解释器就能处理多个C/C++脚本,多个解释器也可嵌入到单个进程中,多个解释器还能嵌入多线程应用程序的不同线程。

虽然如何嵌入脚本引擎到编译的应用程没有包括在计算机编程入门课程中,但是图11所示用于教学的ChIDE中嵌入了Ch解释器,用来解释执行在编辑窗格中的C和C++程序。解释器执行C和C++源代码可以为程序调试提供更多明确的出错信息,而简单明确的出错信息对初学者调试程序尤为重要。再如,Ch解释器嵌入到Mobile-C(一个multi-agent平台),用以支持mobile C/C++ agent,而这种基于agent的移动计算可应用到各种智能机械电子和嵌入式系统中,用动态柔性编程来提高各项性能[13]。

很多龙头企业都在使用嵌入式Ch,如Agilent Technologies公司用嵌入式Ch调控仪器仪表,Lockheed Martin公司用嵌入式Ch做飞机的设计和仿真,ABB公司用嵌入式Ch作自动控制,LG Electronics公司用嵌入式Ch检测生产的电子产品。FunctionBay公司为处理C/C++脚本,将Ch嵌入到其拳头产品RecurDyn(这是一款用于多体动力学分析的软件程序)中。图25显示的是嵌入式Ch和基于mobile C/C++ agent的移动计算在工业机器人、移动机器人、嵌入式系统、智能交通和机电系统设计和仿真中的应用。

基于标准语言的可靠的嵌入式脚本引擎可以免掉开发人员在开发和维护私有脚本语言或解释器上的负担,而开发和维护一个跨平台的基于私有语言的嵌入式引擎在人力、硬件、软件、开发、测试、维护、系统管理、培训和技术支持等方面的成本是非常昂贵的。

7基于Ch的C程序设计教学平台

自从1992年以来,我在加州大学戴维斯分校每年教授工程类学生C语言计算机编程的入门课程。在课堂讲学中,我在笔记本电脑上以交互的方式使用Ch。Ch使我能够快速地演示C语言特征和编程原理,特别是在回答学生问题时。学生们可以快捷地体验C语言的不同特征,无需进行冗长的编译/链接/运行/调试的循环操作。经过10多年教学经验的积累,目前已形成了以Ch为核心的C语言程序设计课程的教学平台[4],体系结构如图26所示。它包括Ch计算环境(由Ch命令外壳和ChIDE集成开发环境两大模块组成)、C语言教材和课件(含350有详细注释的完整实例源程序、1400多页课堂授课用PPT、500多道习题)、讨论训练素材(含200多页课堂讨论用PPT)、教师指南(含教学目标、计划、试题库)和习题题解手册(含每章习题答案及相关源程序)。以上四部分内容是我们长期教学和科研经验的积累和不断完善的结果。

该教学平台主要面向没有任何编程经验的初学者,通过教与学,帮助学生理解和掌握C语言程序设计原理、编程与调试方法以及工程与科学计算算法程序实现,并能够用C编程来解决工程和科学实际问题。

该教学平台已被世界各国越来越多的高等院校所接受和采用。教学实践及反馈表明,该教学平台具有以下主要特征:

(1) 实现了C语言的直观交互式的教学方式,降低了C语言的学习难度

C/C++语句、表达式、函数和程序都可以在Ch命令外壳和ChIDE中解释执行。因此,教师可以在课堂上对C/C++语句、表达式、函数和程序等进行直观的交互式的演示教学,帮助学生形象化地理解C语言指针、结构体、数组、编程逻辑、编程调试等学习难点,让学生能像学习BASIC语言一样学习C语言。

(2) 使用高级数值计算、图形绘制功能以及工程用例,增强了C语言学习的生动性和实用性

该平台具有强大的高级数值计算、二维/三维绘图功能和底层硬件连接与工业控制功能,并附有丰富的工程及科学实际编程应用案例,可以形象而又便捷地展示和讲解使用C语言解决较复杂的工程和科学问题中的应用,有利于激发学生学习的积极性,提高教学的实用性。

(3) 支持跨平台功能,可帮助学生了解和熟悉不同操作系统下的C编程特点及方法

在美国、俄罗斯、欧洲、日本、中国等国家,Windows、Linux、Mac OS X、Unix等操作系统均被广泛使用,而在工业控制、嵌入式系统及Web服务器等领域,Linux操作系统占有更重要的地位。Ch具有跨平台的特点,可以帮助学生了解和熟悉C语言在不同操作系统中进行程序设计和执行的特点,有助于他们在今后工作和学习中适应不同操作系统环境下的程序设计、开发和应用。

(4) 此外,Ch教学平台中的Ch命令外壳、ChIDE以及教材等均支持ISO C89标准的所有语言特性和标准库、C99的大部分新增特性以及64位编程功能,是目前关于C程序设计知识最为完整的教学工具之一。在编写教材时,我们既考虑到初学者的需要,力求浅显易懂、深入浅出,同时也兼顾C语言知识和技能的系统性和实用性,并对一些疑难的高级知识点做了专门的实例化剖析,力求使之成为学生在后续课程学习及今后解决工程和科学领域实际问题时的重要参考资料。

8结语

Ch是一个完整的C语言解释器,同时支持C99新增的大部分特性和C++类。Ch的计算数组、高级数值分析函数、二维和三维图形绘制功能是C/C++框架下最便捷的形式,这些功能可用来方便地解决许多工程和科学中的复杂问题。Windows下的Ch计算环境支持常用的Unix和Linux命令,使学生能够在熟悉的Windows环境中学习Unix和Linux。Ch可作为一个C/C++脚本引擎被无缝地嵌入到其他应用程序中。越来越多的应用程序扩展后都具备了C/C++脚本功能。

基于Ch的C程序设计教学平台是在美国加州大学十多年教学和科研中不断积累和总结而成的一项重要教学成果,并形成了独特的教学模式。该教学平台包括跨平台的C/C++解释性计算环境(由Ch命令外壳和ChIDE集成开发环境组成)、成套的教材及课件、相应的讨论训练素材和完整的教师指南。教学实践及反馈表明,该平台能增强教学的实用性,提高授课效果,降低初学者学习计算机程序设计的门槛,并有助于激发初学者对计算机编程的兴趣和学习的积极性,帮助他们真正理解和掌握如何应用计算机编程这一种重要工具来解决工程和科学中的实际问题。Ch和Ch教学平台可从网上下载[3][4],希望它能使您的教学和编程任务更加快乐有趣。

参考文献:

[1] H. H. Cheng,“Scientific Computing in the Ch Programming Language”,Scientific Programming,Vol. 2,No. 3,pp. 49C75,Fall 1993.

[2] H.H.Cheng,“Extending C and FORTRAN for Design Automation”,ASME Trans.,Journal of Mechanical Design,Vol. 117,No. 3,pp. 390C395,Sep 1995.

[3] Ch―an Embeddable C/C++ Interpreter,.

[4] H. H. Cheng,C for Engineers and Scientists:An Interpretive Approach,New York:McGraw-Hill,Inc. March 2009; iel.ucdavis.edu/cfores;中文版将由高等教育出版社出版.

[5] International Standard:Programming languages - C,ISO/IEC,Geneva,Switzerland,1990.

[6] H. H. Cheng,“Handling of Complex Numbers in the Ch Programming Language”,Scientific Programming,Vol. 2,No. 3,pp. 76C106,Fall 1993.

[7] H. H. Cheng,“Extending C with Arrays of Variable Length”,Computer Standards and Interfaces,Vol. 17,pp.375C406, 1995.

[8] International Standard:Programming languages - C,ISO/IEC,Geneva,Switzerland,1999.

[9] SoftIntegration Graphical Library,/products/silib/graphlib/.

[10] Y. Zhu,B. Chen and H. H. Cheng,“An Object-Based Software Package for Interactive Control System Design and Analysis”,ASME Trans. Journal of Computing and Information Science in Engineering,Vol. 3,No. 4,pp. 366C371,Dec. 2003.

[11] H.H.Cheng and D. Trang,“Object-Oriented Interactive Mechanism Design and Analysis”,Engineering with Computers,An International Journal for Simulation-Based Engineering,Vol. 21,No. 3,pp.237C246,May 2006.

[12]M. Campbell and H. H. Cheng,“Teaching Computer-Aided Mechanism Design and Analysis Using a High-Level Mechanism Toolkit”,Computer Applications in Engineering Education,Vol. 15,No. 4,pp. 277C288,2007.iel.ucdavis. edu/.

[13] Mobile-C:A Multi-Agent Platform for Mobile C/C++ Code,.

Ch: a Pedagogically Effective Cross-Platform Interpretive C/C++ Computing Environment

Harry H. Cheng, Professor

(University of California, Davis, USA)

Abstract: C is one of the most popular languages used to teach introductory computer programming. A pedagogically effective cross-platform C/C++ computing environment called Ch is introduced in this article. Ch is a complete C interpreter. It supports most new features added in C99 and classes in C++. Ch consists of both command shell and user-friendly IDE called ChIDE. In addition, Ch supports computational arrays, a graphical plotting library, and advanced numerical functions for solving complicated problems in engineering and science conveniently. Furthermore, the Ch computing environment in Windows supports commonly used Unix and Linux commands. It allows students to learn Unix and Linux in a familiar Windows environment. Ch can also be seamlessly embedded in other applications as a C/C++ scripting engine for flexible programming. Finally, a Ch-based teaching platform developed and used at the University of California, Davis over the years for teaching introductory computer programming in C will be briefly presented. Experience indicates that this C/C++ interpreter based teaching platform increases the effectiveness of teaching computer programming for real-world problem solving and lowers the barrier for beginners to learn computer programming. It helps students to fully understand and master the working principle of computer program design for solving problems in engineering and science, which is one of the most important and basic skills for engineers and scientists.