1、计算机专业工程实习平台建设的探讨摘要:本文对我系计算机科学与技术专业的工程实习教学模式改革进行了探讨,提出了外部工程实习基地和校内工程实习平台相结合的模式,并重点介绍了校内工程实习平台建设的模型。 关键词本文来自:计算机毕业网 :工程实习;教学环节;平台建设 上海水产大学信息学院计算机科学与技术系在注重基础理论课程建设的同时,加强实践性环节的教学,在教学计划中设置了专业实践和综合实践课程,包括电路与电子技术设计、汇编语言程序设计实践、数字逻辑课程设计、计算机组成原理实践、基于 C#的 Windows 程序设计实践、基于.net 的Web 程序设计实践、数据库程序设计、软件工程实训、需求分析与解
2、决方案设计等。但是单门课程的设计难以帮助学生建立起完整的系统设计理念和掌握开发技术,因此工程实习作为计算机科学与技术专业的一个重要教学环节是不可偏废的。由于外部环境的变化与自身条件,学校此专业的外部实习基地条件不足,因而工程实习教学环节未达到应有的效果,现实情况要求我们寻求一种新模式。 1 工程实习的安排 我们在大三期末和大四上学期安排学生专门完成工程实习的教学任务。将全体学生分成若干大组,每个大组配备专业指导教师。整个工程实习为三周时间,实习环节分成两个阶段。第一阶段,校外实习时间为一周。在该阶段学生在专业教师指导和组织下到计算机专业相关生产、开发企业参观、学习,接触社会,了解行业动态和需求
3、。在实习的基础上,每位学生要写出实习调研报告。本阶段的目的就是让学生直观地、感性地认识 IT 行业,初步接受 IT 职业训练。第二阶段,校内实习时间为二周。该阶段把学生分成若干小组,每组 45人。在校内的工程实习平台上,每组根据一个实际的需求,其成员共同完成系统总体设计、功能模块划分、代码设计及调试、系统联调等阶段工作,最终开发出符合需求的计算机应用系统。本阶段的目的不仅仅是锻炼学生利用所学知识解决实际问题的能力,而且更重要的是培养学生协同工作精神。在这一阶段,指导教师应事先了解学生的情况,进行合理的分组,尽力做到组内学生能力均衡,要求各组内部的成员既要分工,又要协作。为防止在单门课程设计中出
4、现的每组仅由个别同学来完成整个系统开发工作,而其他同学袖手旁观的现象。在校内的工程实习中采用全面的成绩评定规则,即在本阶段的后期,指导老师要对每组的开发工作进行验收。在大组的范围内由小组主要成员演示他们所开发的系统功能,小组中的每位同学都要进行简单答辩。 2 校内工程实习平台的建设 结合学生前三年课程学习的实际,平台被建设成以 SQL Server 数据库系统为核心,采用 CS 结构的计算机应用系统模型。整个工程实习平台分成如下 8 个子项目建设:校园“一卡通”管理系统设计;连锁酒店网络管理系统设计;学生上机管理及考勤系统设计;超市冷冻机远程监测系统设计;冷藏车多温区温度记录与控制系统设计;基
5、于 ARM7 的实时检测系统的设计;RPG 游戏软件设计;多媒体系统设计。每个子项目均模拟一个实际应用问题,但进行了必要的简化处理,以适合 45 个学生的开发小组在二周时间内完成。生产实习平台为每个子项目提供所需的硬件设备,包括 45 台连成局域网的计算机和 IC 卡读写器、RS232-RS485 转换模块、调制解调器等及软件学习模板,使学生具有开展工作的必要条件和环境。 在工程实习平台的硬件建设中,我们尽量利用现有的实验设备。利用现有网络机房的计算机,每 45 台为一组,相互之间用以太网连接,其中一台用作数据库服务器,其他的用作客户机。如果所开发的应用系统中需要通信前置机,则利用其中一台计算
6、机来承担通信前置机的任务。对应用系统中需要的一些外围设备,如 IC 卡读写器、温度传感器、RS232-RS485 转换模块等,采用自制或购买。而对于有些不能自制或购买的外围设备,如 PH 值参数采集器等,分别用一台计算机来模拟,通过程序模拟这些设备参数的产生及设备动作。 在工程实习平台软件建设中,为每个子项目开发了一套软件学习模板。软件学习模板将提供关键单元软件和子项目系统软件。关键单元软件是指学生以前没有接触过的设备接口软件,如传感器的读写程序、串口通信程序等;子项目系统软件是指按照系统设计需求,设计的系统软件架构及按此架构设计的所有功能程序。学生通过对软件模板的学习和借鉴,可缩短开发周期,
7、在二周时间内完成该阶段工程实习任务,达到学习和锻炼的目的。 3 工程实习具体实例 本小节以工程实习平台中的“基于 ARM7 的实时检测系统的设计”子项目为例,来说明工程实习平台的建设内容。子项目的需求为系统必须具备以下 3 个功能模块。 (1) 检测模块。本模块包括三部分,分别是温度检测、PH 值检测、光照值检测。 j 温度检测中采用的是单线制温度传感器 18B20,检测精度可以控制在0.5。该温度传感器有如下特性: 独特的单线接口仅需一个端口引脚进行通讯 简单的多点分布应用 无需外部器件 可通过数据线供电 零待机功耗 测温范围为-55+125 温度以 9 位数字量读出 温度数字量转换时间为
8、200ms(典型值) 温度传感器 18B20 会将温度转换为电流,温度每增加 1,它会增加 1A 输出电流。在温度测量中,传感器存在热惯性,在动态测量中表现为测量值落后于真实值而跟随介质温度的变化,为此必须改善传感器本身的动态特性。采集的数据送入微处理器。 k PH 值检测选用 PHJ-206 作为 PH 值传感器,为其设计了放大、滤波电路,采集的值经放大处理后送入微处理器。 l 光照值检测采用的是一种职能光电转换传感器 TSL230B,它可直接对可见光进行频率转换;其灵敏度、分频输出可由程序控制,反馈采集的数据可以直接传入微处理器。 (2) 控制模块。本模块也包括三部分:温度自动控制、PH
9、值自动控制和光照自动控制。 j 温度自动控制。温度自动控制是通过接受 STR730 发出的温度信号来判别温度是否正常,是偏高或是偏低,以便采取相应的措施。结构图如图 1 所示。 图 1 温度控制结构图 如图 1 所示,传感器将数值传人处理器后由处理器通过算法来计算温度是否在范围内,如果高出预设的范围,则打开制冷装置;如果低于预设范围,则打开加热处理,直到温度在正常范围内。 k PH 值自动控制。程序每分钟检测控制一次加液装置,当检测到 PH 值超出 PH 值范围时,启动加液装置,启动 15ms 后关闭;如下一分钟 PH 值仍超出范围,继续开加液装置,15ms 后关闭;如此循环,直到 PH 值在
10、正常设定范围内。结构图如 2 所示。 如图 2 所示,经由 PH 值传感器将所采集的 PH 值传入处理器进行溢出计算,判断 PH 值是否在预设范围内,如高于预设范围,则打开加液装置;如果低于预设范围,则打开减液装置,直至 PH 值在正常范围内。 l 光照强度自动控制。程序每隔一定的时间对光照强度进行检测,所采集的数据通过 I/O 中断记数传入处理器,通过对该数据的溢出计算来判断是否在正常范围内,如高于预设值则打开光源;如低于预设则关闭光源,直至光照强度在正常范围内。图 2 PH 控制结构图 (3) 显示模块。显示模块是面向用户的模块,它提供给用户一个可视的界面,用户则可以通过此界面来对系统进行
11、按键操作,以达到用户的需求。显示模块的主要配件为 LCD 液晶屏,不同型号的 LCD 所拥有的功能是不一样的。显示模块还必须能将检测装置所采集到的数据实时的显示在 LCD 上,再进行是否溢出的判断。 硬件平台构建好了,还需提供必要的软件模板,以供学生学习、借鉴。子项目系统软件是符合概要设计需求的、具有比较完善功能的系统程序,包含参数采集、参数管理统计、异常情况提示、基本信息管理等模块。子项目系统软件只作为学生学习参考的模板,学生开发的系统不能照搬模板程序。 4 成绩评定规则 成绩评定的指导方针是激励学生互相合作、自主创新。学生成绩的评定并不是由指导教师一人评定,而是在大组范围内学生演示的基础上
12、由学生参与打分。具体成绩评价规则如下: (1) 工程实习以小组为单位,考核整个小组开发任务完成的情况。小组成绩分为 4 个等级:优、良、及格和不及格。 小组成绩为优的指标:小组所有成员均积极工作,合作精神好,整体功能及用户界面完成佳,有创新点,并且有较规范的设计文档资料; 小组成绩为良的指标:小组大部分成员均积极工作,合作精神好,设计任务书中的功能需求均能自主实现,人机界面友好,并且有较规范的设计文档资料; 小组成绩为及格的指标:合作精神较好,仿照模板软件能完成整个系统设计,系统整体功能联调运行通过,能提交设计文档; 开发小组出现下面情况之一,小组成绩为不及格: 子项目的所有功能仅由某一个同学
13、独自完成,小组其他同学没有参与工作。 系统整体不能运行。 所开发的系统未能实现设计任务书中所需求的基本功能。 (2) 学生的个人成绩分成 5 个等级:优、良、中、及格和不及格。每个学生的成绩与小组成绩挂钩。 成绩为优的小组,其主要完成者(12 人)成绩为优,其他同学成绩为良; 成绩为良的小组,其主要完成者(1 人)成绩为优,其他同学成绩为良或中(视承担任务的情况而定 ); 成绩为及格的小组,其主要完成者(12 人)成绩为良,其他同学成绩为中或及格(视承担任务的情况而定); 成绩为不及格的小组,其主要完成者成绩为中,其他同学成绩为不及格。 参考文献 1 方恺晴 . 计算机专业实验教学改革的探讨J
14、. 实验室研究与探索,2002,21(1):6-8. 2 沈建华 ,姜宁. STR71摘要:本文从“数字图像处理”的特点和具体课程设置情况出发,讨论了如何明确教学目标,采用课程设计的教学考核模式来培养学生的动手能力和科研能力。 关键词本文来自:计算机毕业网 :数字图像处理;课程设计;实践动手;科研能力 随着计算机和网络技术的迅猛发展,数字图像处理得到越来越广泛的应用。相应地, “数字图像处理”也成为一门重要的信息技术类专业课程。由于这门课程自身的特点和教学目标,实践动手能力的培养非常关键。在实际教学中,采用课程设计的教考模式,可解决实践能力培养的问题,能激发优秀学生在数字图像处理领域的科研兴趣
15、,并通过进一步的指导性自学培养其科研能力,效果明显。 1 课程特点和设置目的 1.1 课程特点 数字图像处理是一门综合性很强的学科,其讲授的内容为数字图像处理技术的基本概念、原理、算法及其应用该课程具有以下两个特点: (1) 课程内容广泛,理论抽象。由于涉及计算机、数学、光学、电子等多个学科,课程内容广泛,理论抽象,算法实现过程不直观,学生难理解。即使将多媒体和网络引入教学,给学生展示丰富的图例示范,提供强烈的视觉效果,但要使学生真正理解相关知识和技术并不容易。 (2) 实践性强,与实际应用密切相关。这门课程本身的知识体系源自各种具体应用,实践性强,只有通过大量的动手操作和算法实现,才能体会到
16、各种处理方法和技术的功能和作用。 许多老师在教学中充分利用各种教学手段,如建立 Matlab 实验平台、给出交互式操作界面;扩充实验教学内容,增加探索性、创新性与应用性的实习项目,从实践效果来看,对学生实践能力的培养帮助很大。 1.2 教学目的 “数字图像处理”作为一门重要的专业选修课程,一般安排在本科三年级开设。此时学生已经学习过程序设计(一般为 C 语言)与一些基础课程。教学要求包括: 了解数字图像处理的发展、应用以及当前国际国内研究的热点和重要成果; 通过介绍图像的数学描述、图像的数字化、图像正交变换、图像增强、图像恢复等基本图像处理方法,使学生能熟练地掌握数字图像处理的基本过程;较深入
17、地理解数字图像处理的基本概念、基础理论以及解决问题的基本思想方法,掌握基本的处理技术; 了解处理技术相关的应用领域,具有阅读各类图像处理文献的能力; 能够运用一门高级语言编写简单的图像处理软件,实现对图像进行的基本处理。 2 课程设计与实践动手能力 2.1 课程设计的内容与目标 课程设计分两个层次:基本功能的实现与专题研究。 (1) 基本功能的实现。目的是让学生掌握最基本的图像处理技术,包括图像的读写、直方图处理(简单变换和直方图均衡化 )、图像平滑与增强、边缘抽取、阈值化、基本二值形态学处理(腐蚀、膨胀、开、闭等 )、离散傅里叶变换等重要的基础知识点。 (2) 专题研究。目的是激发优秀学生的
18、科研兴趣,培养他们在图像处理研究以及相关学科应用领域的研究和工程能力。专题研究在完成第一层次课程设计基础上进行,其过程与第一层次课程设计有一定重叠时间。专题从在研科研项目中抽取一些小的课题供学生选择;或者学生自由发挥,在经过几周基础学习后,根据兴趣点和介绍的前沿算法拟定课题。一般 24 人组成一个研究小组,给予指导,定期讨论、交流汇报。 2.2 课程设计的实施效果课程的最终考核主要是课程设计,要求学生介绍自己的结果,并随机提问。从学生们最终提交的报告和课程设计程序看,编程能力和实际动手能力明显增强。 课程学习之初,绝大多数学生反映编程基础不够,甚至有人提出退选。坚持到学期末,绝大多数学生都可以
19、完成第一层次的课程设计,并给出完整的、交互式的程序。大家普遍反映这种考察方式很有挑战性,感觉到自己真正能编程能实现许多功能了,动手能力方面的信心大大增强。一些优秀学生的设计软件无论在功能实现和界面设计方面都达到很高水准。图 1 是从一位学生的课程设计报告中节选出来的软件结构设计图。图 2 是另一位学生课程设计的软件实际运行界面。 图 1 一位学生的课程设计软件结构设计 除了这些基础功能的设计,一些专题研究小组申请到了学校或学院的本科生科研资助项目,获得 10003000 元不等的资助金额。学生们的研究热情很高。通过一个学期的锻炼,科研能力大大提高,并在一些研究课题上取得较大进展。没有申请到科研
20、项目资助的同学也表示要在业余时间继续自己课题的研究。 (a) 主界面 (b) 直方图变换的效果和交互界面 (c) 直方图规定化界面 (d) 二值化处理和阈值选择 1 (e) 二值化处理和阈值选择 2 (f) 空间滤波模板 图 2 另一位学生的课程设计软件界面 参考文献 1 张坤华 ,纪震.“数字图像处理”可视化教学体系探索J. 电气电子教学学报,2007,29(1):113-115. 2 贾永红.“数字图像处理”课程的建设与教学改革J. 高等理科教育,2007,(1):96-98, 111. Windows 7 下找不到 IDE 光驱 Q 一台计算机使用 Intel P45 主板,IDE 接口
21、刻录机,最近升级为 Windows 7 操作系统,发现在 Windows 7 操作系统的“资源管理器”中光驱的图标不见,请问这是什么问题造成的? A 该问题应该是由于主板芯片组和 SATA 驱动兼容造成的。建议你在“设备管理器”中,将光驱所对应的 IDE 通道删除,然后安装 Intel Chipset Device Software 9.1.1.1015 PV 版本的驱动程序,下载地址:http:/ Intel Matrix Storage Manager 8.9.0.1023,下载地址:http:/ 摘要:独立学院的教学目标以培养应用型人才为主,但独立学院的教学体系和课程设置一般都沿袭公办学
22、校,这种方式经过多年来的教学实践证明并不利于独立学院学生的学习,学生普遍反映所学知识难度大,毕业后能用到的知识少,本文从理工科弹性教育方面对上述问题进行阐述。 关键词本文来自:计算机毕业网 :弹性教育;课程设置;教学体系 1 关于弹性教育的思考 1.1 学制年限 (1) 学生在读期间,如果有机会获得适宜的就业岗位或就业实习岗位,可以申请暂时中断正常学习进程。中断时间长度可根据工作情况和个人情况确定。在返回学校学习时,可根据工作需要选择进一步学习的内容。 为什么这样做?因为这样可使所学即为所用,不致造成学用脱节。也不会因为学习目标不明确、学习方法不当而造成在学期间一无所获。 这样,也对学校提出了
23、应适应社会发展需求而不断改革课程设置和内容的要求。 (2) 学生在读期间,如果感到最初所学的专业不适合自己,可以申请改学其他专业,但需补上所改专业的必修基础课,学制可适当延长。 这样做,真正体现了以学生为本的思想。充分重视学生自身条件,使学生有学习信心和积极性,达到学有所长。避免因学习进度赶不上而厌学,以致造成一无所长。 1.2 学习内容 (1) 减少专业课必修课程,增加学生自主选修的课程。 这样做的好处是,使学生有较大的学习弹性。培养的学生,在基本专业基础能力相同的条件下,各有所长。按一个模板培养学生是计划经济的产物,不适应商品经济社会。 (2) 实践(实习、实训)课和理论课的教学也可因人而
24、异。 学生在入学初期,可能因为年龄、认识和其他条件的局限,不能正确选择方向。在对所学的学科专业有了一定的了解并对自己的特点明确之后,确定自己应当向实用型发展还是向理论型发展,然后对理论课和实践课进行选择。不必强求千篇一律。 1.3 学习方式 学生可以选择实践型或理论型学习方式。 采取实践型学习方式的学生,以培养动手能力为主。在打好基本功的基础上,主要通过实习、实验、设计和制作实践进行学习。成绩考核以动手能力和实践结果为主。 采取理论型学习方式的学生,注重理论学习。以上课为主。 2 实行弹性教育的必要性 2.1 弹性教育有利于适应商品经济的多元化发展的要求 随着科学技术的飞速进步、社会经济的增长
25、,许多新兴领域、部门、企业和行业不断涌现,必然会出现适应这些新生事物的新型技能。紧跟新产生的新型技能,学校的教学就应当及时更新内容。实行弹性化教育是适应这种形势发展的好办法。 2.2 弹性教育更能体现以学生为本 必须承认学生在知识基础、能力、特长等方面存在差异,有的学生喜欢动手,有的学生喜欢理论,有的学生课堂接受能力强而有的则弱些。实行弹性化教学可使学生根据自己特点进行有效学习。 2.3 照搬公立学校的教学模式有很多弊病 首先,培养目标有所不同。独立学院是教学型学校,以培养应用型人才为主要目标。适应这种培养目标,必须加强对学生技能的培训。 其次,当前公立学校,课程内容越来越多,学生必须花费大量
26、精力在书本知识的理解、消化上。动手训练时间较少、自主学习、创新和独立设计、独立制作时间少,不利于创新型、多样化人才培养。 3 实行弹性教学的可行性 3.1 经济体制基础 在商品经济社会体制下,毕业生自主择业,求职和哪一年毕业没有很大关系,不像计划经济时代,国家只包当年毕业生分配。所以,重要的是使学生能在学校阶段真正学到一技之长。根据学生情况和需要,就学期间参加一段岗位工作,更有利于学生有目标地进行学习,更有效地工作。 3.2 独立学院的自主性 依照民办教育法,独立学院办学是以就业为导向,因此课程设置具有根据社会需求而设置的更大灵活性和合理性,教学也可以采取更有效的方式。 3.3 教育资源共享
27、各学校的品牌课、特色课、实践基地等可以开放共享,这样可以节省资源,并且更能集中力量突出发展各高校的特长。 摘要:嵌入式系统是目前应用非常广泛,发展非常迅速的一个技术领域,做好“嵌入式系统”课程的教学工作也是诸多高校追求的目标。本文系统分析了“嵌入式系统”课程的教学特点,提出了“三点一线”的教学方法,并阐述了“三点一线”教学方法在湖南大学“嵌入式系统”教学中的应用及效果。 关键词:嵌入式系统;教学方法;实验教学 当前,嵌入式系统已经得到了非常广泛的应用,工业制造、过程控制、通信、仪表、仪器、汽车、船舶、航空、航天、军事装备、电子产品等方面均是嵌入式系统的应用领域,可以说,嵌入式系统和嵌入式技术无
28、处不在。在这种情况下,许多高校的计算机、电子、软件等专业针对市场需求开设了“嵌入式系统”相关课程。湖南大学软件学院于 2005 年开始开设了“嵌入式系统基础”课程,在课程的教学过程中,特别重视“三点一线”教学方法的应用,即突出三个教学重点:以课程体系建设为重点;以实验教学为重点;以“学” “用”结合为重点;抓住一条教学主线:以嵌入式发展趋势为导向,以嵌入式项目为驱动,以“教、学、练”三层递阶为手段,以网络教学平台为支撑进行课程教学,取得了良好的效果。 1 “嵌入式系统”课程的教学重点 1.1 “嵌入式系统”课程的教学特点 “嵌入式系统”的教学有如下几个特点: (1) 基础性强。嵌入式技术涉及的
29、领域非常广泛,如计算机工程、软件工程、工业自动控制、机械电子工程、精密仪器、电子工程和电力系统等。随着嵌入式技术与其他专业领域的广泛渗透融合,逐渐形成了新的学科研究方向, “嵌入式系统”课程是嵌入式技术的基础性课程。 (2) 综合性强。 “嵌入式系统”是软件和硬件设计的完美结合,它涉及电子信息、计算机、自动控制等诸多专业相关课程的内容,如操作系统、微机原理、汇编语言、编程语言、程序设计、计算机算法、计算机网络和 z 单片机技术等多门课程, 有很强的综合性,对学生的综合能力培养有着较高要求。 (3) 实践性强。 “嵌入式系统”是理论与实践相结合的课程,必须通过大量的实验和实践环节来系统提升嵌入式
30、系统的专业知识和实际设计能力,可以说,如果缺乏了实验的“嵌入式系统”课程学习就是纸上谈兵。 (4) 潮流性强。嵌入式系统学科发展非常迅速,随着嵌入式技术发展的日新月异,必然要持续跟踪嵌入式技术的新发展,不断修正教学计划,才能适应社会对嵌入式人才培养的需求。 1.2 突出课程体系建设重点 嵌入式系统作为嵌入式处理器和嵌入式操作系统为核心组成的专用计算机系统,其本身就是由硬件和软件紧密捆绑在一起实现的,这个特点就决定了“嵌入式系统”的教学体系必须是软件和硬件两条线并行。在具体专业培养计划设计过程中,依据培养目标要求,我们确定了嵌入式专业的知识架构,并以此为线索对整个课程体系进行设计,开设了支撑“嵌
31、入式系统”的基础课程有:“数字/模拟电子技术” 、 “数字逻辑” 、 “数据结构与 C 语言程序设计” 、 “单片机原理” 、 “计算机组成与结构” 、 “操作系统原理” 、 “软件工程” 、 “计算机网络” 、 “数据库原理”等。同时开设了“嵌入式系统”的预备课程“嵌入式 Linux 程序开发” 、 “嵌入式系统基础” 、 “嵌入式处理器”等,真正做到了使各门课程之间相互衔接,有较强的系统性和连贯性,在强调基础理论的同时,课程内容与技术发展和社会应用需求相适应,较好地满足了嵌入式专业教学需要。嵌入式课程体系示意图如图1 所示。 1.3 突出实验教学重点 “嵌入式系统”课程作为软硬件并重的课程
32、,学习过程中实践经验是最重要的环节,但大多数高校没有足够的条件让学生自己独立构建复杂的硬件平台来学习硬件知识,只能为学生提供一个现有的硬件测量和评价平台,实验教学工作基础较为薄弱。 在我校“嵌入式系统”课程教学安排中,为了能够使得学生更好地了解掌握嵌入式技术知识,本着了解技术发展状况,紧跟技术发展潮流,适应社会发展需要的原则,重点突出实验教学,建立了以武汉创维特公司JXARM9- 2410 实验箱为平台的实验环境,通过实验使得学生接触目标开发板,了解掌握集成开发环境的构建方式和工作模式、嵌入式系统的硬件和软件、JTAG 调试方法等知识内容,进一步深入理解嵌入式系统理论,积累嵌入式系统开发流程、
33、开发方法和开发技巧的经验。在课时的设置上,加大实验教学的课时,实验教学的课时设置为 32 个课时,与课堂教学的课时相等。同时,在实验教学的建设上重点抓好三个方面的内容:一是大力投入资金,创建专用的嵌入式实验室。我院先后投入 400 万元资金,购买了 40 套教学实验设备,设立了面积达 1500 平方米的专用教学实验室。二是做到“教” “练”一体,自行编写切合学生实际需要的实验教材。在实验课程的设计上,不仅要求课堂授课老师同时要担负实验室的教学指导工作,同时还要求授课老师根据课堂教学的内容自行编写符合学生实际需要的实验教材,做到“教” “练”统一。三是举一反三,精心准备实验项目。在实验项目的设置
34、上,不仅仅是使用实验设备配套厂家提供的试验项目,而是根据教学需要,结合实验设备的实际特点进行扩展,设置更加有代表性的实验项目,做到理论教学与实验教学相结合。1.4 突出“学” “用”结合重点 嵌入式系统设计作为面向产品设计的应用性课程,不仅仅是建立理论概念,传授基础知识,更重要的是培养学生的工程素养,建立面向工程的思维方式,掌握解决实际工程问题的科学方法,更加贴近社会实践需要。为此,在课程的设计上,更加注重了解把握嵌入式方向的新技术、新知识,并且将这些新技术、新知识融入到课程教学中,具体做好三个方面的工作:一是选好、配强教师队伍。负责“嵌入式系统”课程的主讲教师都具有一定的嵌入式系统研究和开发
35、经验,部分教师还是从事嵌入式系统开发的一线科研人员。具有实战经验的教师队伍保证了课程课堂讲述与实践工程相结合,更加突出各部分知识内容的具体应用,在课堂教学中,更加注重工程思维的培养,变灌输式学习为启发式学习。二是完善增强教学方案。紧密结合企业的核心技术,以实用性和前沿性为建设目标,深入分析嵌入式系统开发的技术需求,着眼于企业界普遍关心的核心技术,动态调整设置课程内容,使课程内容较大程度地体现嵌入式领域的特点,紧跟技术发展的需要,课堂实例更加贴近实际项目,为培养出业界更为需要的人才打牢基础。三是放开眼界谋求发展。及时跟踪分析国内外一些著名大学,如普林斯顿大学、浙江大学、北京航天航空大学相关课程的
36、开设情况,参照调整我们的课程安排。 2 “嵌入式系统”课程的教学主线 2.1 以嵌入式发展趋势为导向 在“嵌入式系统”课程的教学中,我们着眼嵌入式发展的总体趋势,根据实际嵌入式系统产品的项目开发流程安排教学内容讲授的先后顺序,课程内容的安排具有软硬件系统的综合性、软硬件技术的基础性和主流软硬件平台的前沿实用性,具体教学内容共 10 章,划分为四大部分,主要内容包括: (1) 概论。介绍嵌入式系统的基本概念,包括嵌入式系统的定义、组成、特点、发展概况、应用领域等; (2) 嵌入式硬件系统。阐述各种典型的嵌入式处理器和嵌入式外围设备的特点与工作原理,并且,作为嵌入式处理器的一个实例,分析 ARM
37、内核体系结构及 ARM 处理器的选型和调试方法; (3) 嵌入式操作系统。介绍常见的嵌入式实时操作系统和嵌入式软实时操作系统的种类及选用标准,进一步以目前市场占有率排名第一的 VxWorks 实时嵌入式操作系统为例,详细讲解嵌入式操作系统的组成、多任务环境的工作原理及其交叉开发环境的使用; (4) 嵌入式系统的设计编程。从软件工程角度给出了嵌入式系统的一般设计方法、开发流程步骤、调试手段与测试工具,详细介绍了嵌入式软件相对通用计算机系统一些独特的编程技术和优化方法。 2.2 以嵌入式项目为驱动 在“嵌入式系统”的教学过程中,我们从课堂讲解演示实验项目和学生实践训练项目两个方面,精心进行了实验教
38、学的设计。其中课堂讲解演示实验项目是嵌入式 WEB 服务器的设计与实现,安排在每章节知识点讲述之后,该实验项目划分较细,目的在于巩固课堂讲述的知识内容;学生实践训练项目是移动手持 IP 电话的设计与实现,安排在教学内容的四大部分讲述完成之后,该实验项目划分较粗,目的在于综合检验学生对于知识的掌握理解程度。这两个嵌入式系统产品开发实际项目贯穿整个课程的始终,更好地对课程教学活动起到驱动作用。 2.3以“教、学、练”三层递阶为手段 传统的教学活动中,最重要的知识信息传递手段是教师教授、学生学习,知识信息的巩固主要靠作业来实现。在嵌入式系统的教学活动中,我们对传统的“教、学、练”体系进行了革新,摒弃
39、了传统的“老师教、学生学”的教学方式,探索建立了教师课堂讲解演示、学生个人单元实验和团队合作实践训练的三层递阶式教学方式,培养学生“边学边做” ,进而提升至“做中学”的创新能力,具体的教学方式是: (1) 根据实际嵌入式系统产品的项目开发流程安排教学内容四大部分讲授的先后顺序,即首先是嵌入式处理器的选型、硬件外围电路的设计,接着进行嵌入式操作系统的选型和移植裁减以及驱动程序的开发,最后是嵌入式应用程序的编写、调试和优化。每一部分教学内容的若干知识点都以“嵌入式 WEB 服务器”实际项目作为案例进行讲解和演示,以给学生一个完整的嵌入式系统产品开发的范例,做到“教有所指” 。 (2) 为了帮助学生
40、真正理解掌握每一部分教学内容的若干知识点,不再以作业作为主要的知识掌握辅助手段,而是设置了与课堂讲授同步的多个单元实验,并且要求实验以个人为单位进行,以实验的完成情况来检查学生对知识的理解程度,做到“程序代码不仅仅是目的,更重要的是继续学习的方法,特别是像二叉树、树和图的遍历这样的包含着存储结构设计的基础性算法,应该是分析、设计、实现和解释复杂算法的工具、要素。本文以垂直输出二叉树、快速排序、汉诺塔、生成二叉链表的设计和实现为例,说明这个方法。 1 垂直输出二叉树与层次遍历 垂直输出二叉树的算法可以利用层次遍历方法 1 的模式。不同的是,在层次遍历中对结点的访问要改为定位输出,因此,队列中的元
41、素不仅要包含结点指针,而且要包含输出的位置。 如何确定结点输出的位置?显示器的横向是 X 轴,纵向是 Y 轴,坐标轴的交点在左上角。假设屏幕宽度 (screenwidth)是 80。如图 1 所示。 二叉树的第 1 层只有一个结点,是根,在(40,1)点输出。40 为偏移量(offset)。 第 2 层有两个结点,分别是上一层结点的左右孩子,输出的位置相对其双亲的位置而左右对称,因此,偏移量应该是上一层偏移量的一半(offset=40/2=20)。具体输出位置分别是(40-offset,2)和(40+offset,2),即(20,2) 和(60,2) 。 第 3 层有四个结点,分别是上一层的
42、2 个结点(20,2)和(60,2)的左右孩子,偏移量 offet=20/2=10,结点(20,2)的左右孩子的输出位置分别是(20-offset,3)和(20+offset,3),即(10,3)和(30,3) , 结点(60,2) 的左右孩子的输出位置分别是(60-offset,3)和(60+offset,3),即(50,3)和(70,3) 。 归纳起来,第 i 层上任一结点的输出位置是在访问第 i-1 层结点时,由其双亲的位置确定的。如果其双亲的位置是(parentpos,i-1),那么该结点若是左孩子,则输出位置是(parentpos-offset,i),若是右孩子,则位置是(paren
43、tpos+ offet,i),其中偏移量 offset 是上一层偏移量的一半。 如何把输出光标移到输出位置呢?y 坐标变化,即层数增加,只要执行换行操作即可。关键是如何根据 x 坐标的变化来移动光标。控制格式化输出的成员函数ios:width(int),是按照参数值减去当前输出光标的缩进量来更新输出宽度的( 而且默认情况下是按右对齐输出)。以图 26.7 为例,假设一个结点已在位置(20,2) 上输出,这时的光标缩进量(假设用 indent 表示)是 20,下一步要在(60,2)的位置上输出,x 坐标是 60,这时利用成员函数 width(int)来计算的输出宽度应该是 40,即 x-inde
44、nt,用参数表示为 width(40),即width(x-indent)。 struct Location int xindent,ylevel;/结点坐标位置 ; void Gotoxy(int x,int y)/输出位置 static int level=0,indent=0; if(y=0)/ 重复输出二叉树时要重新赋值 level=0;indent=0; if(level!=y)/若层数增加,则缩进量从 0 开始 cout indent=0; level+; cout.width(x-indent);/根据已有缩进量确定当前缩进量 indent=x;/ 记录当前的缩进量 2 快速排序与
45、前序遍历 按照树的集合表示法,二叉树根的作用在于把集合分成两部分,一部分代表左子树结点,另一部分代表右子树结点。 首先,设计一个划分数组元素的算法:以数组的某一元素为基准,把数组元素分为前后两部分,前面的不大于基准,后面的不小于基准,返回值是基准的下标。这个基准相当于根。然后按照前序遍历的顺序,对数组的前后两部分(左子树和右子树) 继续这种划分,直到数组有序(见表 2)。 3 汉诺塔与中序遍历 n 阶汉诺塔问题:有三根石柱,在一根石柱上放着 n 个盘子,每个盘子都比它下面的小,遵循以下规则,把盘子移到另一根柱子上: (1) 每次只能移动一个盘子。 (2) 盘子可以放在任一根柱子上。 (3) 任
46、何时刻,大盘不能压在小盘之上。 下面用归纳法证明,n 阶汉诺塔问题可以用 n 层二叉树描述,而且它的解就是该二叉树的中序遍历序列:用一个四元组(n,A,B,C)表示这样一个 n 阶汉诺塔问题:把 n 个盘子从 A 柱搬到 C柱,中间可以借助 B 柱。其中 A、B、C 的地位是相对的,不妨假设第一个表示起始位置,最后一个表示终止位置,中间表示过渡位置。例如(n,B,A,C)表示把 n 个盘子从 B 搬到 C,中间可以借助 A 的 n 阶汉诺塔问题。用一个三元组 (n),A,B)表示把第 n 个盘子从 A 直接搬到 B。 假设有两个盘子,要把两个盘子从 A 搬到 C,即(2,A,B,C),就必须先
47、把第1 个盘子从 A 直接搬到 B,即(1),A,B),再把第 2 个盘子从 A 直接搬到 C,即 (2),A,C),最后把第 1 个盘子从 B 直接搬到 C,即(1),B,C)。序列(1),A,B),(2),A,C),(1),B,C)正好是以(2,A,B,C)为根,以(1,A,C,B)和(1,B,A,C)为左右孩子的二叉树的中序遍历序列,只是访问结点的结果是,去掉过渡位置,盘子数加括号)(见图 2)。双亲结点与左孩子的关系是,盘子个数减 1,过渡位置和终止位置交换,与右孩子的关系是,盘子个数减 1,起始位置和过渡位置交换。 假设有 n 个盘子时结论成立。现在假设有 n+1 个盘子。要把 n1
48、 个盘子从 A 搬到 C,即(n1,A,B,C) ,必须先把前 n 个盘子从 A 搬到 B,即(n,A,C,B),然后把第 n+1 个盘子从 A 直接搬到 C,即(n+1),A,C),最后把前 n 个盘子从 B 搬到 C,即(n,B,A,C)。序列(n,A,C,B),(n+1),A,C),(n,B,A,C) 正好是以 (n+1,A,B,C)为根,以(n,A,C,B)和(n,B,A,C)为左右子树根的二叉树的中序遍历顺序 (中序遍历左子树,访问根结点,中序遍历右子树)(见图 3(a)。而左右子树都是 n 阶汉诺塔问题,已假设结论成立。因此对 n+1 阶汉诺塔问题,结论也成立。到此证明完毕。 图 3 分别给出了 n 阶和 3 阶汉诺塔问题状态树。3 阶汉诺塔问题的解用中序序列表示是:(1),A,C),(2),A,B),(1),C,A),(3),A,C),(1),B,A) ,(2),B,C),(1),A,C)。 4 生成二叉链表与后序遍历 在二叉树顺序存储结构中,如果一个非 0 元素的下标是 pos,那么该元素的左右孩子下标是 2*pos+1 和 2*pos+2。把二叉树的顺序存储转为链式存储的算法可以按照层次遍历的模式完成(见表 4)。 5 小结 上述算法的非递归代码都可以和在相应的二叉树遍历的非递归模式中实现。另外