时间:2022-11-17 23:43:59
开篇:写作不仅是一种记录,更是一种创造,它让我们能够捕捉那些稍纵即逝的灵感,将它们永久地定格在纸上。下面是小编精心整理的12篇c语言程序设计实例,希望这些内容能成为您创作过程中的良师益友,陪伴您不断探索和进步。
关键词: 一体化教学 课程模式 任务驱动 考核机制 以赛促学
一体化教学改革已经在广大职业教育院校广泛开展,所取得的成效已经逐步体现。一体化教学中,学生提高了学习兴趣,学习的积极性、主动性得到了充分调动,知识的掌握更牢固,运用能力更强。为了推进和全面开展一体化教学,计算机专业的一体化教学改革迫在眉睫。
数据结构很多是用C或类C语言描述的,所以在传统教育中,通常先开设C语言课程,随后的学期中学习数据结构,但在实际教学中发现存在以下问题:一是先学的C语言注重语法的学习,没有太多实际应用,掌握不够牢固,在下学期学数据结构时需要花很多时间复习C语言的知识;二是花时间复习C语言,自然就会占用学习数据结构的时间,导致数据结构讲授时时间仓促;三是过多的语法和细节的学习并没有让学生觉得掌握好了C语言,反而觉得太过琐碎,难以掌握。为了解决上述问题,我们把《C语言程序设计》和《数据结构》这两门课程整合,并进行一体化教学改革,具体从以下方面开展和实施。
一、针对学生特点,设计课程模式为“由果到因”
教学是教师的教和学生的学所组成的一种人类特有的人才培养活动。传统教育中,教师是教学主体,传道授业解惑,这种方式强调教师的主体地位,侧重考虑教师所教授的知识和方法,而忽略了学生学习的主观能动性,我们俗称“填鸭式”教学;现在的教育倡导以学生为主体,充分调动学生的主动性和积极性,让他们从原来的“要我学”转变为“我要学”,这样可以大幅提高学生的学习效率,取得更好的效果。另外,职业院校的学生普遍存在基础薄弱、自觉学习能力较差的现象。基于上述理念,课程模式设计为“实例―理论―设计实例”,即教师先给出实例让学生模仿操作,操作过程中或操作后(依据不同实例的具体情况确定)讲解实例相关理论知识,然后让学生自己设计实例。通过模仿―学习―应用的过程,达到学以致用。
如C程序的入门,传统的课本都是先讲授C程序的结构、数据类型、运算符、表达式,直到顺序结构程序设计讲完,学生才可以自己写简单的程序,这个过程大致需要8到10个学时的理论学习,如此漫长的时光中,很多学生已经失去了学习C语言的兴趣,等到让他写程序的时候,大部分学生很难写出来。改用新的方式后,简短地对C语言进行介绍后,就给出几个经典的程序,让学生上机操作,熟悉上机环境和C程序的调试方法。学生在操作过程中,切实感受到程序在计算机中的运行,并看到运行的结果,这些直观的冲击会让学生保持良好的学习状态和持续的求知欲望。然后讲解C程序的结构和实例中用到的数据类型、运算符等理论知识,为学生答疑解惑。有了基本的概念后再模仿已经操作过的实例,自己设计程序完成指定的任务,实现复习、巩固和灵活应用的既定目标。
二、使用任务驱动模式,依据课程内容,合理划分任务
为了配合第一点的实现,将现有的《C语言程序设计》和《数据结构》课程进行整合编排,设计如下几个任务:C程序入门、程序设计的三种结构、顺序表、链表、堆栈、队列、树、排序、搜索、图。各个任务进一步细分,划分成若干个子任务,方便具体实施,如顺序表又分为顺序表的创建、插入、查找、删除等。
任务的划分是一体化教学改革中的重点,任务的难易程度、规模的大小、实例的选择,都直接关系到课堂的组织、学生的学习效率、学习的积极性等,这些因素都直接影响教学效果。要做到任务划分合理、实例选择得当,需要注意以下两点:第一,任务划分要经过专业教师的讨论和分析,条件允许的话,最好请企业的专家进行指导,得出哪些内容是需要整合的,哪些内容是需要拆分的,拆分到哪些任务中是合理的,便于教学实施,有利于在以后的学习和工作中应用。第二,每个任务下的子任务拆分要合理,规模大小要尽量适合每次课(一般为2学时)的实施;实例的选择要遵循从简到难、循序渐进的原则,并能通过两到三个实例将相应的子任务的内容分解。同时应该考虑到学生的兴趣,尽量从学生感兴趣的实例入手,提高学生的主观能动性。
三、理论知识做到够用就好,最好随时补充
传统教学中,我们习惯于先把理论知识全盘讲给学生听,要求学生理解、掌握,然后会应用。实际教学过程中,枯燥的理论知识很快就会让学生感到厌烦,他们不等你把这些知识讲完,就已经将注意力投入到了其他跟课堂内容根本不相关的事物上。结果大部分学生只掌握了整堂课中小部分的内容,教学效果很不理想。采用任务教学后,学生首先拿着程序上机操作,在做的过程中会发现不懂的地方,随之产生这是什么,这个可以做什么的疑问,从而吸引学生的注意力,提高课堂教学效率。
以前教C语言,我发现到写顺序结构的程序时,学生写程序无从下手,帮助他回忆程序书写的整个过程,其实只需要三分钟的时间就够了,我疑惑:既然短短几分钟就能够让学生了解程序的基本组成,为什么先前要花那么多时间讲?最关键的是,讲的那些理论知识,根本就没有几个学生能掌握,效率极低。由此得到启发,不如先让学生操作,然后探究为什么这么做,这样顺理成章地将理论知识传授给学生。显然这时候的理论讲解要简明、扼要,切忌长篇大论。当然,这样也会产生一些问题,理论知识会被分割得支离破碎,没有系统性。目前我们采用的是一个任务结束后让学生讨论、总结,教师补充的方式将相应的理论知识串联,使之完整和系统化。课堂上当学生有疑问或用到已学过的知识时,也要随时补充和复习,通过多次强化,帮助学生牢固掌握相应的理论知识。
四、防止“重操作、轻理论”
在任务驱动模式实施过程中应避免出现“重操作、轻理论”的状况。也就是片面强调学生的动手操作而忽略了理论知识的传授。教学过程中,教师对于整个课堂的组织把控显得更重要。尽管我们强调课堂的主体是学生,要充分发挥学生的主观能动性,但并不是让学生放任自由。教师应在课堂中做好组织引导工作,合理划分时间段内任务,让整堂课有序、有效进行。如可以将一堂课划分为操作、同学讨论、教师小结、设计实例等环节。将理论知识渗透在每堂课中,学习了这些操作中遇到的理论知识后,能够运用这些知识设计实例,而不是简单机械地重复操作,达到理论指导实践的目的。
五、制定完备的考核体系,保证教学顺利进行
为了监督学生保质保量完成每个任务,并保持一定的积极性,需要对整个教学过程进行有效监督和管理。传统教学中结果考核显然已经不适用于任务制教学模式,而应该采用全新的过程考核机制。过程考核的细则在制定时要考虑到学生的操作能力、态度、学习效果等因素,使考核起到监督学习过程、端正学习态度、肯定学习效果、促进学生努力的作用。良好的考核机制可以有效保证教学的顺利进行,防止课堂监管失控。学生在被考核的过程中,会更好地约束自己,更好地实现自我管理。
六、适当开展竞赛,以赛促学
积极鼓励学生参与技能竞赛。技能竞赛既能起到交流经验、切磋技艺的作用,又能调动教师和学生钻研技术、提高技能的积极性。为了使竞赛取得良好成绩,应营造能促进学生学习的氛围。这样以竞赛为学习目标,以竞赛的成绩作为奖励,从而促进日常教学活动顺利开展。
七、配套合理的课程设计,提高综合应用能力
一、问题的提出与分析
目前,高职教育在教学内容、教学方法等方面,知识老化,方法陈旧落后,理论与实践相脱节。这迫切要求我们对教学方法方式进行改革。
一段时期以来,教学改革仿佛变成了关于媒体、工具如何在教学中使用的改革。从简单的教学用具,到音像材料,到计算机、多媒体技术、计算机网络等,信息传播通道的改进,使教学内容表达趋于直观,增大了课堂信息量,提高了教学效率,但不能代表整个教学改革的全部内容,这一点在我们的教学实践中得到了证明。所以如何设计目标为导向的教学活动,是我们教学改革研究的重点。
二、改革思路与方案
(一)消除学生对C语言的神秘感,培养学生的兴趣
教师应做好入门阶段的工作,向学生讲授C语言的发展历史、当前的状况,通过举例说明学生们所熟知的某些软件或作品其内在的创作工具是C语言或C语言也可以同样地制作完成,最好能够编写一个小型实用程序,以培养学生对C语言的兴趣,缩短学生所熟知的软件工具与课堂知识间的距离。
(二)精选内容,突出重点,讲清难点
教科书一般内容较多,教师应精选课程内容,确定讲授重点。精选课程内容是提高教学质量的一项重要工作,它是教学内容的核心部分。《C语言程序设计》的核心内容包括C语言基本语法、程序设计思想和程序调试方法。语法是任何一门语言的基础,C语言的语法包括数据、数据类型、运算符、流程控制语句、数组、函数及其调用、变量的作用域、指针、文件等。在介绍这些语法时应该重点讲清楚那些对后续章节影响较大、且在实际编程过程中频繁使用的语法,而不可过多地拘泥于讲解一些琐碎却并无多大用处的语法。C语言和程序设计的学习是相辅相成的,C语言基本语法的学习必须通过必要的程序设计实践才能真正掌握,同样,也只有掌握C的基础知识才能设计出好的程序。
(三)教学方法的改进
在教学实践中,对C语言程序设计的教学方法不断地研究和改革,探索与尝试,在不同的教学环节上,针对不同的教学内容,采用了多种多样的教学方法进行教学,例如启发式教学、讨论式教学和互动式教学以及理论与实践结合式教学,还有边学边用式教学等等。
在课程的宏观教学上通过逐步拓展的实训项目和设计,将每一阶段的学习进行小结性的贯穿与能力提高。将知识点都溶化到一个个实训项目的程序编写中。在课程初期,主要是进行单项的编程练习,重在掌握C语言的基本语句、数据类型与程序结构等。在进入数组、函数、结构、指针和文件内容教学时,开始实训项目的编程实践,逐步组建如“学生管理系统”这样的综合性程序系统,并且不断添加功能模块,不断优化设计,使整个系统按照内在关联逐步拓展而成。这样的实践性教学内容与方法设计给项目拓展教学法以实际落脚点,符合认知与学习规律。
在课堂的微观教学上采用实例递进驱动教学法,改变满堂灌的做法,将学生的眼手脑全部调动起来。精心设计实例,给学生一个比较实际的切入点,通过老师的演示使学生感觉能够入手,然后再通过将此实例不断修改、扩充,引导学生参与到程序的编制过程中,在这个过程中,展示学生所作的程序,让学生来评判优劣,吸收优点,修改错误,引导学生进行优化。这样通过一个程序实例的层层推进,引入课程内容,使得学生的每一步学习都有基础,是循序渐进,螺旋式上升的过程。
(四)课程设计环节的把握
C语言由于它的实践性很强,要真正掌握它,课程设计是必不可少的重要环节。要想使课程设计收到实效,一定要根据学生的实际情况,开展不同的教学活动。所以在进行课程设计准备选题时,应充分考虑学生的兴趣,多选择一些学生熟悉的、实用的趣味性强的题目,包括一些简单的游戏。另外,不同的学生根据掌握程序不同,或者根据不同的课时数,活动形式也应区别开来。对成绩好的,课时多的,只给出题目,指导他们去找资料,分组讨论,引导他们的思考方向,由他们自己独立编码调试。而对成绩中等的这部分同学,应给出思路,帮助他们进行整体设计,指导他们编码调试。这样一来,在整个课程设计的过程中,绝大多数的同学都动了起来,都能认真调试程序,他们自己在课程设计总结中都感到很有收获。
三、改革实践的效果
(一)突出了学生主体作用
学生不再是被动的、教师传授知识的对象,而成为了学习的主人。他们可以根据自己的对课程掌握的情况和认知情况,自主地选择学习方式和学习内容。这样使学有潜力的学生可以有更多的学习选择,得到应有的发挥。而学习上有困难的学生,也可得到教师有效的指导,既解决了学习起点不一的问题,又可以充分发挥学生学习的主动性和积极性,变被动学习为主动学习。
(二)体现了教师的指导作用
在这个教学过程中,教师的角色已经转换,他们不再是教学活动的中心,课堂教学也不是教学活动的唯一形式。教师传授更多的是如何获取学习信息,教会学生如何掌握学习的方法,学会学习。教师真正成为学生的启发者、指导者和帮助者。
(三)加强了学生协作性的培养
所有的学生都可以在课堂上、上机练习时或课程设计中,围绕一个主题和问题,大胆地展开自己的想象思维,发表见解,经集体讨论和交流,寻求问题的解决方式。这样可以使参加讨论的每一位学生对同一问题,获得多方面、较深入的认识,有助于思考能力、交往能力的养成,有助于团队精神、集体观念的培育,使学习者为某—相同目标而团结共事的合作精神得到提升。
教学要与科学技术以及社会经济发展相结合,尤其是计算机语言教学,更应与当前计算机应用技术的发展相适应。我们将面临许多新情况和新问题,我们要为计算机语言教育在已有的基础上再上一个新台阶去研究和探索。
参考文献:
[1]谭浩强.C语言程序设计[M](第一版).北京:清华大学出版社.2000.
[2]郭慧玲、胡海芝.《C程序设计》课程教学改革探究[J].电脑知识与技术,2006,(35):201-202.
[3]屈晓.浅谈C语言教学的体会[J].科教文汇(上旬刊),2009,(06):147-148.
作者简介:
(1.甘肃农业大学 信息科学技术学院,甘肃,兰州 730070;
2.兰州交通大学 电子与信息工程学院,甘肃 兰州 730070)
摘 要:高等农业院校程序设计类基础课程以培养实践人才为根本目标,将CBE教学模式和程序设计类课程教学结合起来,在教学内容、教材及教学资源建设、教学方式等关键环节进行了综合改革,形成了2+2+3的“理论教学及实验教学相统一的课程建设体系,理论教材及实验教材相统一的教学资源建设,CBE教学方式、项目驱动教学方式及双语教学方式三层次实践人才培养过程”实践人才培养模式,培养具有“宽基础、强特色、高素质、实用性”复合型实践程序设计人才,在实践人才体系培养方面取得了显著成效.
关键词 :高等农业院校;程序设计;CBE教学模式;实践人才培养模式
中图分类号:G645文献标识码:A文章编号:1673-260X(2015)07-0265-03
基金项目:中华农业科教基金会教材建设研究项目“基于CBE项目驱动式的C语言程序设计教学模式探索与研究(NKJ201203023);国家自然科学基金(61063028);甘肃省科技计划资助项目(No.145RJYA288);甘肃农业大学教学研究项目(GSAU120226,GSAU120229);甘肃农业大学盛彤笙科技创新基金资助项目(GSAU-STS-1322)
1 引言
当前,我国农业正处在由传统农业向现代农业转变的时期,用信息技术对农业生产的各种要素进行数字化设计、智能化控制、科学化管理,能够大幅度减少农业消耗,降低生产成本,提高产业效益.根据教育部“面向21世纪教育振兴行动计划”提出的以培养人的创新思维和创新能力的创新教育来适应日新月异的科技发展和社会需求的有关精神,结合高等农业院校的具体情况,以创新教育为导向、深化农业院校学生计算机程序设计能力培养的教学体系建设为目标,对高等农业院校程序设计类课程人才培养模式进行了探索和改革.
程序设计类课程是高校计算机教育的基础与重点,是一门对理论与实验开展同步教学的课程[1].在不远的将来,程序设计和数学建模与微积分、高等代数、大学物理一样,成为所有大学的核心基础课程[2].程序设计类课程具有知识点多、概念复杂、规则繁多、使用灵活、自由度大、抽象度深等特点[3-5].我校生源中农村学生居多,基础教育阶段接触计算机较少,大学低年级阶段急需大力普及计算机基础知识、培养计算机应用能力.作为农业院校,程序设计类基础课程培养人才的目标要更明确,方法和手段要更有效,因此培养具有“宽基础、强特色、高素质、实用性”复合型实践人才是非常有必要的.
在这个培养目标基础上,学校按照国家精品课程指标体系要求,突出创新意识和能力培养的先进教育思想,强化教学全过程管理,以把程序设计类基础课程建设成为能够反映本学科领域的最新研究成果、具有农业院校鲜明特色的示范性精品课程为目标,在教学内容、教材及教学资源建设、教学方式等关键环节进行了综合改革,形成了2+2+3的实践人才培养模式,在实践人才体系培养方面取得了显著成效.
2 基于CBE项目驱动式的程序设计类实践人才培养模式
CBE(Cometency Based Education)的涵义是“职业综合能力为基础的教学模式”,简称能力教育[6].CBE教学模式的特点是教学方法多样化,一切以学生为中心,强调在实践中学习,在学习中实践[6].CBE的特点恰好和我校实践人才培养目标相符合,学校以“十二五规划”建设为契机,融合CBE教学特点,建立程序设计类基础课程实践人才培养模式,结合高等农业院校的实际,以岗位必须的知识、技能、行为意识为从业能力的基础,以能力表现为教学目标,教学进程的基准,注重“学”并以学生的学习为中心,不受时间和环境限制组织课程与实施教学,形成了2+2+3的实践人才培养模式.
2.1 理论教学内容及实验教学内容相统一的建设体系
2.1.1 理论教学内容课程体系建设
随着我国经济持续快速增长和信息技术的飞速发展,我国走新型农业现代化道路对培养新一代具有信息素养和计算科学创新能力的农业科技创新人才提出了迫切需求.以这种社会需求为导向,对农业院校程序设计类课程体系建设进行探索和改革,构建“分层次、分专业”的课程体系,贯通三大层次全校五十三个农业本科专业培养方案,将程序设计类课程按专业分三类开设,农医类专业开设VB、文史类专业开设VFP、理工类专业开设C,实现了因材施教、以社会需求为导向的目的.教学内容强调课程内多知识点融合、跨课程知识体系融合、已学与拓展知识融合、实验与课外研究融合等四方面,做到了从点到面、从单元到系统、“引导入门-基础系列-专题研究-科学研究”的循序渐进的教学过程.
2.1.2 实验教学内容体系建设
通过实验进一步理解程序设计的基本知识,通过理论和实践教学,使学生较好地掌握程序设计语言各方面的知识,掌握基本的程序设计过程和技巧,具备初步的高级语言程序设计能力,并能熟练应用程序设计集成环境进行程序设计语言的编写、编译与调试,达到全国计算机等级无纸化考试的要求.为配合理论教学我们将实验分为以下三种类型.第一类是基础与验证型实验,主要涉及该课程的相关知识点;着重培养学生逻辑分析的能力,学会使用流程图、伪代码描述问题,学会使用计算机的处理方法思考问题,把计算机语言的教学内容从数学游戏的圈子转变到社会实践中的计算机应用,培养和训练学生分析、解决实际问题的能力.第二类是设计与开发型实验,有效培养了学生综合应用知识与技术的能力,培养学生带着问题自主学习、寻找答案的能力.实际中结合学生信息管理系统、数值数据处理、信息数据管理等开发案例展开实验.第三类是研究与创新型实验,针对部分兴趣高、编程能力强的学生设计该类实验,重在培养学生的研究能力与创新意识.采用软件工程的方法引导学生进行分析和设计,实现完整的小型应用系统,主要以“挑战杯”、“创新杯”竞赛、SRTP项目及毕业设计的形式进行开展.
2.2 理论教材及实验教材相统一的教学资源建设
2.2.1 理论教材建设
根据《普通高等教育农业部“十二五”规划教材》的要求,并按照2013年全国计算机等级考试调整方案要求,对教材每个知识点按照“提出问题—解决问题—归纳分析”三部曲进行建设.对每个实例按照“提出实例—程序设计分析—参考程序—程序运行结果—程序分析—注意事项”几个步骤进行编写.在各知识点中,增加了一些兼具趣味性和实用性于一体的程序实例,并补充了代码风格、函数封装、程序调试、常见错误分析等现代程序设计必备的知识.这些资源通过整合后上传至网络教学平台成为网络课程,由授课教师按课程进度授权给学生使用.
2.2.2 实验教材建设
为配合等级无纸化考试要求,实验教材运行环境建立在等级考试集成开发环境下,增加了无纸化上机测试题,包括选择题、程序改错题、程序填空题和程序设计题四大部分.教材建设过程中,收集整理了大量教学资源,注重立体教材建设工作,教材全部配套编写了多媒体课件、讲义和教案,习题提供标准答案.配套课件实现“文字分层显示、算法动态演示”的功能,增强图文并茂的特点.
2.3 CBE教学方式、项目驱动教学方式及双语教学方式三层次实践人才培养模式
强调实践对理论教学的指导作用,将企业作为实训基地,建立校企长期合作,采取校企互动的方式,针对性地培养既具有扎实的基础理论知识,又能解决实际工程问题的复合型、实用型人才.实践项目内容从知识方法应用、综合设计到研究探索循序渐进,深化实验项目的层次性和工程背景,实现以工程为背景、研究方法多样、综合应用所学知识、对实验进行研究探索的程序设计类实践教学体系,从而使程序设计类课程体系更加适应社会需求,更加灵活应变.实践教学体系如图1所示.
充分利用现代化教学手段,注重各种立体化教学资源的积累和充分利用,采用项目案例递进式实训过程LTM(Learning Training Mentoring)的循序渐进的模式提高实训质量,利用网络教学平台优化课程答疑和反馈的方式和途径,改革课程的考核方式使其更有利于检验学生的能力,广泛利用网络教学平台帮助学生课后学习和自主学习,培养学生的学习能力.具体教学方式如下,教学过程见图2所示.
2.3.1 CBE教学方式
第一层次是通过互动式和案例教学法,在教师的指导下根据教学目的和要求,运用多种形式启发学生独立思考,根据遇到的实际问题,进行综合分析研究,提出见解,做出判断和决策,从而提高学生分析问题和解决问题的能力;第二层次是基本操作技能训练和基本工作能力培养,培养学生具有严谨的科学态度与规范的操作方法,采用仿真与实际相结合的手段,既加强了学生对基础理论知识的理解,又学会了知识的综合运用,使学生能运用掌握的理论知识来解决实际问题;第三层次是实践和创新能力的培养,在实习基地实现基本技能转化现实的工作方法和工作能力,实现“校园人”向“社会人”角色转变.
2.3.2 项目驱动教学方式
从农业院校实际需求出发,项目力求既结合实际,又能涵盖课程教学的要求.教师提出学生自学和开发、研究的进度,设计教学进程,以程序编制牵引理论教学,以项目开发和程序的拓展驱动教学.通过项目和实例讲授程序设计的基本概念、基本方法,把重点放在解题思路上.从开始就使学生将注意力集中在所解决的问题领域,从具体实例理解程序设计类课程的开发特点和程序总体框架,通过实例本身既学会某一类问题的解决方法和算法设计,又掌握了程序设计类课程的基本语法、语句.即在程序设计类课程的环境下,针对农业类实际问题进行分析、构建数学模型、设计算法、最后编程实现.
在学习的不同阶段设计不同针对性的实例,主要包括以下三个阶段.第一,开始阶段设计的实例是将学生的注意力吸引在程序设计类课程的总体功能和程序的总体框架上;第二,在学习中间阶段设计针对某些数据类型或应用特点的实例、针对模块分解和组合的实例、针对算法分析与设计的实例等;第三,在学习的后期进行综合课程设计,将所学知识融会贯通.在设计实例的同时还需要调整课程的教学模块,有些章节知识需提前引入,如函数、文件等,先不深入学习,仅作为宏观分析问题解决问题的工具,可在后续实例学习过程中逐步加深理解和应用.
2.3.3 双语教学方式
双语教学是贯穿于以上各教学方式中的.作为程序设计语言,其语法表达采用的就是简单而含义明确的英文单词,且上机环境也为英文界面,二者关系密不可分.程序设计课程教学中加入适当的计算机及程序设计方面的英文专业词汇,部分或全部教案采用英文形式,有助于学生专业英语水平的提高和尽快熟悉、适应以英文信息为基础的软件开发环境.
3 教学成效
程序设计类基础课程实践人才培养模式在全校推广的几年内,教学成效显著,具有显著的教学示范效果.(1)课程教学质量评价高,教学效果好.由教务处组织的学生评教结果显示,课程组的所有教师近3年的评价平均成绩均在90分以上.(2)凝练并更新教学内容,融入农业院校的特色先后编写出版了8部教材,其中《C语言程序设计》两部教材先后被列入《普通高等教育农业部“十二五”规划教材》,“VB程序设计”和“C语言程序设计”课程先后被评为甘肃农业大学校级精品课程.按照省级精品课程建设要求,搭建了程序设计类课程学习网站,并开发了程序设计类课程学习论坛.(3)学生学习效果整体得到提升.我校学生参加全国计算机等级考试(二级)的过关率逐年稳步上升,并在全省高校中名列前茅;参加全国计算机等级考试(三级、四级)的学生人数逐年增加,过关率也有所提高.培养模式应用推广期间,课程组教师负责指导学生参加学校SRTP项目50余项;指导学生参加第一、二、三、四届甘肃省“创新杯”计算机应用技能大赛,共获奖项30余项,参与学生90余人;指导学生参加全国大学生数学建模竞赛,共获奖项8项,参与学生24人;指导学生参加全国大学生电子设计竞赛、共获奖项3项,参与学生9人;指导学生参加甘肃省“挑战杯”课外科技学术作品竞赛,共获奖项3项,参与学生10余人;近三年内课程组成员指导学生累积获得省级以上奖励120余人次.我校生源中农村学生居多,基础教育阶段接触计算机较少,但在全国计算机等级考试中通过率已连续多年高于全省高校平均水平.
4 结束语
高等农业院校程序设计类基础课程以培养实践人才为根本目标,将CBE教学模式和程序设计类课程教学结合起来,形成了特色鲜明的2+2+3的实践人才培养模式,全校推广后教学成效显著,具有显著的教学示范效果,为高等农业院校培养具有“宽基础、强特色、高素质、实用性”复合型实践程序设计人才奠定了基础.
参考文献:
(1)付沙,薛娟,陈智俐.计算机程序设计类课程实验教学改革与研究[J].计算机时代,2010(4):56-58.
(2)习慧丹,胡洋.高校计算机专业程序设计课程教学改革探讨[J].信息技术与信息化,2012(3):37-39.
(3)乔淑云,黄刚.程序设计类课程教学改革与计算思维之培养[J].计算机教育,2012(10):17-23.
(4)王方.C语言教学模式:“简单任务+归纳法”[J].安庆师范学院学报(自然科学版),2011,17(3):112-116.
关键词:虚拟仪器;比较教学;LabVIEW;仪器设计
作者简介:杨武夷(1982-),男,福建泰宁人,厦门大学海洋与地球学院,讲师。(福建 厦门 361005)
中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2012)04-0072-02
20世纪80年代中期,美国国家仪器公司(National Instruments,简称NI)首先提出虚拟仪器(Virtual Instrument,简称VI)的概念。虚拟仪器基于计算机的软硬件平台,利用高性能的模块化硬件,结合良好的虚拟仪器软件平台来完成各种测试、测量和自动化的应用,软件是虚拟仪器的核心。[1,2]虚拟仪器在高校的教学研究中应用广泛,在计算机辅助教学方面发挥着重要的作用,目前也有越来越多的高校开设“虚拟仪器设计”课程。
教学方法有很多种,“比较教学法”是其中应用广泛的一种。比较教学法将新的知识和学生已熟悉的知识进行比较,找出新旧内容之间相同点和不同点,然后进行差异化的学习,重在存同求异。笔者在教学时,注重以学生在学习先修课程时所获得的知识和体验为基础,将“虚拟仪器设计”和其他课程进行比较教学,这样就能事半功倍。本文对比较教学法在“虚拟仪器设计”课程中的应用进行探讨,以期在教学实践中能不断总结和改进该门课程的教学内容和方法,使这门课程的教学效果不断得到提高。
一、“虚拟仪器设计”课程的主要内容
“虚拟仪器设计”课程包括虚拟仪器系统、虚拟仪器软件平台及课程实验三大部分。虚拟仪器系统部分主要包括虚拟仪器的基本概念、系统组成、模拟信号和数字信号测量的基本方法、虚拟仪器总线接口技术及软件标准等内容;虚拟仪器软件平台部分主要包括编程环境、数据操作、程序结构、文件I/O、数据采集、数据分析处理及仪器控制等内容;通过实验教学使学生对虚拟仪器系统设计有深入的理解。软件是虚拟仪器的核心,因此,虚拟仪器的软件平台是课程的核心。虚拟仪器软件开发环境有文本编程环境和图形化编程环境两种。其中最具代表性的是NI公司提供的LabVIEW图形化编程语言与Measurement Studio,其提供了完整的虚拟仪器开发集成工具和应用软件。在课程中要培养学生的LabVIEW编程思想。
二、比较教学法在“虚拟仪器设计”课程中的操作性
乌申斯基说:“比较是一切理解和思维的基础,我们正是通过比较来了解世界上的一切。”求同和求异是思维的两个翅膀:求同在于认识事物的共性,而求异在于发现事物的个性。比较思维法就是要从具有类似性质的事物中寻找其差异,发现事物之间的共同点和不同点,因此,一般都用求同求异的方式来进行比较。在比较的过程中,要抓住事物本质,在引导学生认识事物间异同的同时解释这种异同,使比较不流于肤浅,达到对知识深入理解的目的。
从课程体系的继承性上看,学生在学习“虚拟仪器设计”课程之前已学习了模拟电子、数字电子、计算机组成原理、微机原理与接口技术、高级程序设计语言(如C语言程序设计)等电子和计算机相关课程。这些先修课程与“虚拟仪器设计”课程的主要内容有很大的继承和延续性,有很多共同点,也存在很多的不同点。比较教学表现在“虚拟仪器设计”课程中,就是把虚拟仪器技术与已学的电子、计算机技术进行比较,找出其中相同点和不同点,通过比较鉴别,使学生比较全面地掌握虚拟仪器技术的一种教学方法。运用比较教学可以促使学生快速地理解和掌握虚拟仪器技术,可以在较少的课时内完成教学任务,从而提高教学效率。
三、通过比较教学认识虚拟仪器系统
虚拟仪器是计算机技术、大规模集成电路技术和通信技术发展的结果。通过介绍仪器的发展历史,比较不同阶段仪器之间的异同,使学生对虚拟仪器的概念和特点有深入的理解。从传统仪器到虚拟仪器一共经历了四个发展阶段:第一代为模拟仪器;第二代为数字式仪器;第三代为智能仪器;第四代为虚拟仪器。四代仪器的共同点是它们都是信息获取的手段,是认识世界的工具;不同点是它们的系统结构和功能不断提升。模拟和数字式仪器功能简单。智能仪器将单片或多片微处理器与传统仪器有机地结合在一起形成单机,拥有对数据的存储、运算、逻辑判断及自动化操作等功能。不同种类的智能仪器其组成都可以分为数据采集与控制、数据的分析与处理、结果的输出与显示三大功能,且都是以硬件形式存在,仪器硬件存在冗余,使用率低,开发、维护的费用高,技术更新周期长。虚拟仪器基于计算机的软硬件平台,除了数据采集与控制需借助于通用的测量功能硬件,数据的分析与处理、结果的输出与显示都借助计算机平台来实现,借助计算机的网络功能可以实现分布式测控。与传统仪器相比,虚拟仪器有多方面的优势,[3]如表1所示。
虚拟仪器的关键技术之一是总线技术。作为连接控制器和程控仪器的纽带,总线的能力直接影响着系统的总体性能。虚拟仪器总线接口技术有GPIB总线、VXI总线、PXI总线和LXI总线等。[3]选择正确的总线是开发一个测量系统的关键。通过对比不同总线的性能、总线结构、接口技术和使用特性,分析比较不同总线的特性和适用情况。
四、通过比较教学掌握虚拟仪器软件平台
掌握虚拟仪器软件平台是虚拟仪器设计的核心,下面探讨比较教学法在图形化编程语言LabVIEW教学中的应用。要学好LabVIEW程序设计,就要掌握编程环境、数据操作、程序结构、文件I/O、数据采集、数据分析处理及仪器控制等内容。学生在学习“虚拟仪器技术”课程之前通常已经学习了高级程序设计语言,例如C语言程序设计,因此对计算机编程已经有一定的体验。因此可以通过比较C语言和图形化编程语言,进行知识和编程思想的迁移,提高学习效率。
C语言支持的基本数据类型有布尔型、数值型(整型和浮点型)、字符型、字符串和数组,其中除字符型数据LabVIEW不支持外,其他的基本数据类型LabVIEW都支持。除此之外,LabVIEW还支持复数浮点型。C语言是基于文本的语言,变量的类型通过文本声明,而LabVIEW作为图形化的编程语言,数据类型隐含在前面板的输入控件和显示控件及程序框图面板的常量中,每种数据类型有相应的控件和常量。C语言和LabVIEW中数组都是同类型元素的集合,但C语言中数组元素的个数不能动态改变,而LabVIEW中数组元素的个数能动态改变。C语言中的结构体与LabVIEW中的簇有类似的功能,能包含任意数目任意类型的元素,LabVIEW中的簇是一个容器,可以将不同类型的控件放入容器。
C语言中的for循环结构、while循环结构、if…else…条件结构以及switch选择结构在LabVIEW中都有对应的程序结构,这些对应的结构之间有共同点,同时也存在不同点。C语言中的for循环和LabVIEW中的for循环都可用于将某段程序循环执行指定的次数,但LabVIEW中的for循环的循环次数是固定的,不能像C语言中的for循环那样可以在满足条件时通过break语句来退出循环。另外,LabVIEW中的for循环通过以索引的方式获取循环结构体外的数组,则for循环的次数由数组的大小决定。for循环结构和while循环结构中常常要进行前后两次循环之间的数据交换,因此,LabVIEW专门提供了移位寄存器和反馈节点来实现前后两次循环之间的数据交换。移位寄存器和反馈节点类似C语言中的临时变量。当LabVIEW中的case结构的输入端子输入的是布尔型数据时,其等价于C语言中的if…else…条件结构;当LabVIEW中的case结构的输入端子输入的是整型数据时,其等价于C语言中的switch选择结构。C语言程序是按照语句的顺序从上到下逐条执行的,而LabVIEW程序框图中相互独立的图形代码(图形代码之间没有连线)是并行执行的,LabVIEW中提供的顺序结构能够设定相互独立的图形代码的执行顺序。
LabVIEW提供了强大的文件I/O函数用以满足不同的文件操作需求。虽然LabVIEW支持的文件类型很多,但文件I/O操作的一般流程和C语言中的文件I/O操作流程是类似的:首先创建或打开一个文件,然后从文件中读取或向文件中写入数据,最终关闭文件。和C语言类似,LabVIEW中利用文件引用句柄对文件进行区分,用于对文件进行操作。
五、实验教学中的比较教学法
虚拟仪器设计分为硬件设计和软件设计两个方面,软件设计是虚拟仪器设计的核心。在实验教学中,一方面通过简单的程序设计习题使学生掌握图形化编程语言的编程思想,另一方面通过虚拟仪器系统设计使学生了解虚拟仪器的设计原则和设计步骤。
LabVIEW是图形化编程语言,对象之间的数据通过对象之间的连线来传递,因此,当面对一个程序设计问题时,习惯C语言编程思想的学生可能一时无从下手。在这种情况下可以让学生先思考怎样设计C语言程序来解决问题,找到解决问题的方法,然后根据C语言程序中的结构找到LabVIEW程序要使用的程序结构,实现相同逻辑的LabVIEW程序。例如,要求设计一个LabVIEW程序计算一个非负整数的阶乘。首先编写C语言程序计算一个非负整数n的阶乘n_factorial,程序如下所示:
unsigned int n,t,n_factorial;
.........;
t = 1;
for(int i = 0;i < n;i++)
{
t = t *(i+1);
}
n_factorial = t;
程序中利用到了for循环,通过变量t记录每次for循环的计算结果。对应到LabVIEW程序,利用For循环和移位寄存器可以实现相同的逻辑,在For循环中移位寄存器中的数据与循环次序索引i加1的值相乘后保存在移位寄存器中,程序框图如图1所示。
虚拟仪器设计的关键是根据系统划分的硬件和软件功能选择计算机类型和接口技术。虚拟仪器系统中某些功能既可以用硬件实现,又可以用软件实现,方法多种多样,因此,系统的具体结构千差万别。基于虚拟仪器工程设计实例,分析比较不同系统实现的优缺点。在虚拟仪器系统设计的实验中,要求学生考虑不同的系统实现方案,分析比较不同系统方案的特点,结合实际情况从中选择一种进行系统实现。
六、结论
实践证明,比较教学可以利用学生已有的知识帮助他们更好地掌握虚拟仪器的相关知识,把他们在高级语言程序设计中获得的编程思想和方法迁移到图形化编程语言的程序设计中,通过虚拟仪器系统设计的方案比较来了解虚拟仪器的设计原则。从近几年的教学实践来看,通过比较教学,极大地提高了学生的学习效率,学习效果显著。
参考文献:
[1]梁志国,孙宇.虚拟仪器的现状及发展趋势[J].测控技术,2003,(12):1-4.
关键词:计算机组成;计算机系统结构;课程群建设;教学改革
随着多核/众核处理器以及可重构计算技术的出现,计算机体系结构技术面临重大改变,给相关课程的教学提出了新的问题和新的挑战。如何在教学内容中体现技术的发展?如何利用FPGA技术提升实验水平?如何统一规划相关课程的教学?特别是在不久的将来,计算机体系结构可能发生重大变革的情况下,如何为那些将要在新型体系架构下从事计算机科学和技术研究和开发的学生打下良好的专业基础?这些都是我们近年来一直考虑的问题。带着这些问题,我们跟踪了美国几个一流大学近几年来相关课程的教学内容及实验方法。对照国际一流大学的先进做法,结合我校计算机人才的培养目标,我们提出了“计算机组成与体系结构”课程群建设思路,并根据实际情况对相关课程进行了教学改革实践。
1国外一流大学相关课程教学情况
通过对UC Berkeley、Stanford和MIT等多个美国一流大学在相关课程方面教学情况[1-5]的跟踪,我们发现,这些大学对相关课程教学都进行了调整,通过开设新课程或调整相关课程教学内容加入了多核/多线程处理器的相关内容,特别强调学生对HDL、FPGA、SOC、并行体系结构、并行程序设计等技术的掌握。这些大学在相关课程教学内容和实验内容方面基本相同,都是以典型的四段或五段流水线CPU设计技术和存储器层次化结构为核心内容,教学理念和教学思路也非常相似,都是站在计算机系统的高度阐述计算机硬件系统的结构和设计思想,强调软件与硬件的关联,使学生能很好地在高级语言程序、汇编语言程序、机器指令代码和硬件机器结构之间建立相互的对应转换关系,以建立对计算机系统的整体认识。
图1给出了美国UC Berkeley大学2009年相关课程的设置概况,图中箭头反映课程开设先后关系。
图1UC Berkeley大学相关课程设置[2]
CS61C(Machine Structure)主要包括C语言程序设计、指令流水线和存储器层次结构等方面的基础内容,以“C语言MIPS汇编MIPS目标代码MIPS处理器设计”为主线组织内容,以“高级语言程序设计”实验和“模拟器”实验为手段,使学生建立单处理器计算机系统的整机概念。
CS 150(Components and Design Techniques for Digital System)主要介绍数字逻辑电路基础知识和EDA设计技术,2009年以前的实验主要是在FPGA开发板上进行视频解码及播放电路设计开发,从2009年开始改为“流水线CPU设计”,要求学生采用流水线方式设计实现16条MIPS指令,以串行接口方式从PC上装入程序到FPGA开发板,并通过PC调试程序,最终通过VGA接口,将FPGA板连接到一个显示器上,在该显示器上显示由所设计的CPU执行的一个游戏程序的执行结果,如图2所示。
图2UC Berkeley大学CS150课程综合实验内容[3]
CS 152(Computer Architecture & Engineering)着重介绍多处理器并行计算机体系结构,包括多核/众核处理器、多处理器计算机系统以及各类并行处理机制等。
CS194为新开设的本科生课程,是一门基于FPGA的以计算机系统结构实验为主的课程。在开设新课程的同时,该校还对相关课程内容进行了调整,从2009年开始,将CS152中基于FPGA的流水线CPU设计实验移到了CS150课程中,把原来研究生课程CS252中的很多内容移到了CS152。
由此可见,在这类课程的教学中,UC Berkeley近两年有一个明显变化,就是在保留传统课程内容的同时加强了基于FPGA的硬件设计能力的培养。此外,在本科教学中加深了并行体系结构方面的教学内容,而且教学内容的调整是在对相关几门课的统筹规划下进行的。
2课程群建设思想
随着多核/众核处理器技术的出现,我们意识到,必须对计算机组成与体系结构方面的教学内容进行调整。我们首先对本系开设的所有课程的教学内容进行了梳理。结果发现,由于课程间缺乏统一规划和协调,教学存在内容大量重复或缺失、课堂教学和实验内容不匹配、课程之间内容脱节等问题。有必要将相关课程组成一个课程群,以便在一个完整的框架体系下统一规划、相互协调,构建科学合理的计算机组织与体系结构相关课程教学体系。为此,从2007年开始,我们提出并实施了“计算机组成与体系结构”课程群建设方案。
2.1课程群教学目标
根据本课程群在计算机系统中的重要位置,结合我系的生源情况和培养目标,我们提出课程群的基本教学目标为:提高学生对计算机系统的全面认识水平和系统设计能力,建立计算机整机概念,全面理解计算机系统的层次结构。具体包括以下几个方面:了解计算机指令集体系结构的设计原则和设计原理;具备使用HDL进行计算机硬件设计的基本能力;深刻理解OS和硬件之间的分工和衔接关系;掌握从硬件角度出发进行编译优化的基本技术;深刻理解从硬件角度出发编制高效程序的基本原理;提高利用硬件知识进行程序调试的能力。
2.2课程群建设思路
课程群建设的总体思路为:1)根据课程群建设总体目标,规划好课程群涵盖的知识结构和框架体系,合理定位各门课程的教学目标,把每个知识点落实到具体课程中。2)根据课程群知识点总体框架,拟定课程之间知识点衔接方案,并在教学过程中明确各知识点在不同课程之间的关系。3)根据规划分头编写或修订教材及教案,并在统一的框架下建设相关课程网站。4)在保留各课程独立实验平台的同时,构建一个课程群公共实验平台,并使各课程实验内容按照一定的关系有机联系起来。
3课程群教学改革实践
我们首先对现有课程进行了调整。将原先模拟电子技术部分内容合并到数字逻辑电路设计中,形成数字逻辑与数字系统课程;将原先的计算机组成原理和计算机系统结构内容合并,形成计算机组织与系统结构课程;同时建设一门新课高级并行体系结构。通过对相关课程的调整,我们构建了以“计算机组织与系统结构”为核心的课程群,如图3所示。
图中箭头表示课程前后关系,其中计算机系统概论、数字逻辑和数字系统、计算机组织与系统结构为必修课;微机原理与接口技术、嵌入式系统原理、高级并行体系结构为选修课。此外,为了加强对学生FPGA、EDA、数字系统和流水线CPU等方面设计和实践能力的培养,课程群教学规划中专门设置了数字逻辑电路设计和计算机组成原理必修实验课。
3.1各课程在课程群教学中的定位
围绕课程群教学目标,根据课程之间的相互关系,我们确立了各课程在课程群教学目标中的定位:1)计算机系统概论从宏观上介绍计算机系统涉及到的各个层次的内容,让学生从整体上了解计算机系统的全貌和相关知识体系。2)数字逻辑与数字系统围绕组合逻辑设计和时序逻辑设计两大核心内容,在逻辑门到功能部件这两个层次展开。以后续课程中用到的功能部件作为设计实例,采用“实例化”教学思路组织教学内容。3)计算机组织与系统结构从寄存器传送级以上层次介绍单处理器计算机系统设计的基本原理,实验重点在CPU设计和存储器方面。该课程处于课程群中核心地位,一方面,先行课程中学生感到似是而非的问题在此要明确;另一方面,需要运用先行课程的基本功能部件构建更大规模和更强功能的部件;此外,本课程中提出的设计原则和实现原理要在后继课程的计算机系统实例中得到体现。4)微机原理与接口技术定位为计算机组织与系统结构的基本原理在PC上的实例化教学课程,主要以目前流行的基于IA-32体系结构的PC为实例,实验重点内容在PC的I/O接口技术。5)嵌入式系统原理定位为计算机组织与系统结构的基本原理在嵌入式系统方面的实例化教学课程。实验教学重点是基于ARM处理器和VxWorks及 COS-Ⅱ操作系统的简单嵌入式软件开发技术。6)高级并行体系结构主要在更高层次上介绍多核/众核CPU、多处理机系统、集群系统等不同粒度和规模的多处理器并行计算机系统的工作原理、实现方式及其应用领域。
3.2各课程教学内容的关联和衔接
课程群中的课程之间有很多关联,必须合理处理好关联内容,使课程之间能有机衔接。对于关联内容,我们的主要处理思路如下:
1) 数据的表示。
对于进位计数制及其相互之间的转换、ASCII码
表示、逻辑数据表示、汉字编码、无符号数表示、带符号数表示,要求学生在计算机系统概论课程中掌握,而在后继课程中作为“回顾”内容;各种BCD码的介绍和相关电路设计内容在数字逻辑与数字系统中讲解;补码特性和浮点数的表示则在计算机组织与系统结构中详细介绍。
2) 功能部件。
逻辑门电路、半加器、全加器、加法器、比较器、编码器、译码器、触发器、寄存器、移位器、内存储器的实现技术由数字逻辑和数字系统详细介绍;计算机系统概论课程仅作概要性的功能说明和解释;计算机组织与系统结构课程则运用这些基本电路来构建更大的功能部件。
3) 外存储器。
有关磁盘信息的存储、磁盘存储器的构造、磁盘驱动器和磁盘控制器的接口、磁盘存储器的性能指标等内容主要在计算机组织与系统结构中详细介绍;计算机系统概论课程仅作概要性说明;微机原理和接口技术中不再讲解。
4)I/O设备及其接口。
计算机系统概论课程从计算机硬件系统组成的角度简单提一下常用的外部设备的功能;计算机组织与系统结构主要介绍各种外设抽象出来的一个通用结构,以及外设控制器的通用结构,并着重解释清楚“外设―I/O接口(外设控制器)―I/O总线―主机”的连接关系;微机原理与接口技术则具体介绍PC机所用的一些接口电路、I/O总线及其互连。
5) 虚拟存储器。
计算机组织与系统结构主要介绍虚拟存储器的基本概念和MMU中涉及的地址变换、页表和段表结构、快表,以及如何发现“缺页”和发生“缺页”时处理器中进行的一系列处理步骤;微机原理与接口技术具体介绍Pentium系列处理器对虚拟存储器的支持,包括段选择子、段描述符/描述符表、逻辑地址―线性地址―物理地址的转换等。对于“缺页”处理过程中涉及的问题,操作系统课程将会作详细介绍。
3.3课程实验内容的规划和实施
课程群的实验教学思路是,将各课程中相关实验内容规划在统一平台上实现,使得实验内容相互依托、避免重复,由低层逐步向高层过渡,最终使学生全面建立计算机系统的整机概念。
统一实验平台是Altera DE2/70开发板,其上拥有70000个逻辑单元的Cyclone® II 系列2C70型FPGA 芯片,并配有软核处理器NiosII和相应的开发软件:Quartus II、SOPC Builder、NiosII IDE、DSP Builder等,可以开展以下五个层次的实验:功能部件CPU+存储器软核处理器+存储器+总线+I/O软核处理器系统+OS软核处理器系统+OS+多媒体编码等应用。
在Altera DE2/70统一实验平台上开展的实验主要有以下几个方面:
1) 数字逻辑电路实验。
利用Quartus II实现基于HDL和FPGA的组合电路、时序电路和简单数字系统设计实验。
2) 计算机组成原理实验。
利用Quartus II实现基于HDL和FPGA的ALU、寄存器组、桶型移位器、乘/除法器,单周期CPU、多周期CPU和流水线CPU的设计实验。
3) 微机原理与接口实验。
基于软核处理器和SOPC开展总线、存储器和I/O接口实验。例如,通过总线实现外设和SRAM相连;利用UART实现轮询、中断和DMA方式I/O。
4) 嵌入式系统原理实验。
主要包括两类实验:(1)基于NiosII+μCOS操作系统的实验,例如七段数码管显示实验、小型GUI
移植实验和文件系统读写实验等;(2)基于NiosII IDE的简单应用系统开发实验,例如简单C语言编程实验、简单DSP处理实验等。
有些课程除了在以上统一实验平台上开展实验以外,还要求完成其他实验,如计算机组织与系统结构的编程实验,微机原理与接口的汇编程序设计实验,嵌入式系统原理的基于ARM处理器的实验等。
4结语
经过近年来的课程群教学改革实践,我校相关课程的教学内容在广度和深度上都有提高;课程间知识点的衔接更加合理,减少了重复,弥补了缺失。通过统一规划,课堂教学内容和实验内容相得益彰;在对课程群统一的教学实验平台和统一实验内容的规划下,我们实现了各课程间实验内容的有机衔接。
由于课程群的建设时间较短,需要开展的工作还有很多,今后几年,我们主要在以下几个方面继续进行课程群教学改革实践:编写相关课程教材以开展课程群系列化教材建设;加强实验教学内容,增加和完善各类模拟器实验;开设计算机系统综合设计实验课程。
相信通过以上一系列的教学改革措施,一定会改变学生“喜软怕硬”的心理。学生对计算机组织与体系结构方面知识的掌握水平和运用能力将会有较大提高,为后续课程的学习打下坚实基础。
参考文献:
[1]UC Berkeley.Machine Structure[EB/OL].[2008-07-09].inst.eecs.berkeley.edu/-cs61c/su08/.
[2]UC Berkeley. Computer Architecture and Engineering[EB/OL]. [2009-05-07]. inst.eecs.berkeley.edu/-cs152/sp09/.
[3]UC ponents and Design Techniques for Digital Systems[EB/OL].[2009-02-16]. inst.eecs.berkeley.edu/ -cs150/sp09/.
[4]Stanford University. Computer Organization & Systems[EB/OL].[2009-06-15]. stanford.edu/class/cs107/.
[5]MIT. Computation Structures[EB/OL].[2009-05-08]. 6004.csail.mit.edu.
Construction and Reform of “Computer Organization and Architecture” Courses Group
YUAN Chun-feng, HUANG Yi-hua, WU Gang-shan, YU Jian-xin, WU Hai-jun
(Department of Computer Science and Technology, Nanjing University,Nanjing 210093, China)
摘要:本文对我系计算机科学与技术专业的工程实习教学模式改革进行了探讨,提出了外部工程实习基地和校内工程实习平台相结合的模式,并重点介绍了校内工程实习平台建设的模型。
关键词:工程实习;教学环节;平台建设
中图分类号:G642
文献标识码:B
上海水产大学信息学院计算机科学与技术系在注重基础理论课程建设的同时,加强实践性环节的教学,在教学计划中设置了专业实践和综合实践课程,包括电路与电子技术设计、汇编语言程序设计实践、数字逻辑课程设计、计算机组成原理实践、基于C#的Windows程序设计实践、基于.net的Web程序设计实践、数据库程序设计、软件工程实训、需求分析与解决方案设计等。但是单门课程的设计难以帮助学生建立起完整的系统设计理念和掌握开发技术,因此工程实习作为计算机科学与技术专业的一个重要教学环节是不可偏废的。由于外部环境的变化与自身条件,学校此专业的外部实习基地条件不足,因而工程实习教学环节未达到应有的效果,现实情况要求我们寻求一种新模式。
1工程实习的安排
我们在大三期末和大四上学期安排学生专门完成工程实习的教学任务。将全体学生分成若干大组,每个大组配备专业指导教师。整个工程实习为三周时间,实习环节分成两个阶段。第一阶段,校外实习时间为一周。在该阶段学生在专业教师指导和组织下到计算机专业相关生产、开发企业参观、学习,接触社会,了解行业动态和需求。在实习的基础上,每位学生要写出实习调研报告。本阶段的目的就是让学生直观地、感性地认识IT行业,初步接受IT职业训练。第二阶段,校内实习时间为二周。该阶段把学生分成若干小组,每组4~5人。在校内的工程实习平台上,每组根据一个实际的需求,其成员共同完成系统总体设计、功能模块划分、代码设计及调试、系统联调等阶段工作,最终开发出符合需求的计算机应用系统。本阶段的目的不仅仅是锻炼学生利用所学知识解决实际问题的能力,而且更重要的是培养学生协同工作精神。在这一阶段,指导教师应事先了解学生的情况,进行合理的分组,尽力做到组内学生能力均衡,要求各组内部的成员既要分工,又要协作。为防止在单门课程设计中出现的每组仅由个别同学来完成整个系统开发工作,而其他同学袖手旁观的现象。在校内的工程实习中采用全面的成绩评定规则,即在本阶段的后期,指导老师要对每组的开发工作进行验收。在大组的范围内由小组主要成员演示他们所开发的系统功能,小组中的每位同学都要进行简单答辩。
2校内工程实习平台的建设
结合学生前三年课程学习的实际,平台被建设成以SQL Server数据库系统为核心,采用C/S结构的计算机应用系统模型。整个工程实习平台分成如下8个子项目建设:校园“一卡通”管理系统设计;连锁酒店网络管理系统设计;学生上机管理及考勤系统设计;超市冷冻机远程监测系统设计;冷藏车多温区温度记录与控制系统设计;基于ARM7的实时检测系统的设计;RPG游戏软件设计;多媒体系统设计。每个子项目均模拟一个实际应用问题,但进行了必要的简化处理,以适合4~5个学生的开发小组在二周时间内完成。生产实习平台为每个子项目提供所需的硬件设备,包括4~5台连成局域网的计算机和IC卡读写器、RS232-RS485转换模块、调制解调器等及软件学习模板,使学生具有开展工作的必要条件和环境。
在工程实习平台的硬件建设中,我们尽量利用现有的实验设备。利用现有网络机房的计算机,每4~5台为一组,相互之间用以太网连接,其中一台用作数据库服务器,其他的用作客户机。如果所开发的应用系统中需要通信前置机,则利用其中一台计算机来承担通信前置机的任务。对应用系统中需要的一些设备,如IC卡读写器、温度传感器、RS232-RS485转换模块等,采用自制或购买。而对于有些不能自制或购买的设备,如PH值参数采集器等,分别用一台计算机来模拟,通过程序模拟这些设备参数的产生及设备动作。
在工程实习平台软件建设中,为每个子项目开发了一套软件学习模板。软件学习模板将提供关键单元软件和子项目系统软件。关键单元软件是指学生以前没有接触过的设备接口软件,如传感器的读写程序、串口通信程序等;子项目系统软件是指按照系统设计需求,设计的系统软件架构及按此架构设计的所有功能程序。学生通过对软件模板的学习和借鉴,可缩短开发周期,在二周时间内完成该阶段工程实习任务,达到学习和锻炼的目的。
3工程实习具体实例
本小节以工程实习平台中的“基于ARM7的实时检测系统的设计”子项目为例,来说明工程实习平台的建设内容。子项目的需求为系统必须具备以下3个功能模块。
(1) 检测模块。本模块包括三部分,分别是温度检测、PH值检测、光照值检测。
j 温度检测中采用的是单线制温度传感器18B20,检测精度可以控制在±0.5℃。该温度传感器有如下特性:
独特的单线接口仅需一个端口引脚进行通讯
简单的多点分布应用
无需外部器件
可通过数据线供电
零待机功耗
测温范围为-55~+125℃
温度以9位数字量读出
温度数字量转换时间为200ms(典型值)
温度传感器18B20会将温度转换为电流,温度每增加1℃,它会增加1μA输出电流。在温度测量中,传感器存在热惯性,在动态测量中表现为测量值落后于真实值而跟随介质温度的变化,为此必须改善传感器本身的动态特性。采集的数据送入微处理器。
k PH值检测选用PHJ-206作为PH值传感器,为其设计了放大、滤波电路,采集的值经放大处理后送入微处理器。
l 光照值检测采用的是一种职能光电转换传感器TSL230B,它可直接对可见光进行频率转换;其灵敏度、分频输出可由程序控制,反馈采集的数据可以直接传入微处理器。
(2) 控制模块。本模块也包括三部分:温度自动控制、PH值自动控制和光照自动控制。
j 温度自动控制。温度自动控制是通过接受STR730发出的温度信号来判别温度是否正常,是偏高或是偏低,以便采取相应的措施。结构图如图1所示。
图1 温度控制结构图
如图1所示,传感器将数值传人处理器后由处理器通过算法来计算温度是否在范围内,如果高出预设的范围,则打开制冷装置;如果低于预设范围,则打开加热处理,直到温度在正常范围内。
k PH值自动控制。程序每分钟检测控制一次加液装置,当检测到PH值超出PH值范围时,启动加液装置,启动15ms后关闭;如下一分钟PH值仍超出范围,继续开加液装置,15ms后关闭;如此循环,直到PH值在正常设定范围内。结构图如2所示。
如图2所示,经由PH值传感器将所采集的PH值传入处理器进行溢出计算,判断PH值是否在预设范围内,如高于预设范围,则打开加液装置;如果低于预设范围,则打开减液装置,直至PH值在正常范围内。
l 光照强度自动控制。程序每隔一定的时间对光照强度进行检测,所采集的数据通过I/O中断记数传入处理器,通过对该数据的溢出计算来判断是否在正常范围内,如高于预设值则打开光源;如低于预设则关闭光源,直至光照强度在正常范围内。
图2 PH控制结构图
(3) 显示模块。显示模块是面向用户的模块,它提供给用户一个可视的界面,用户则可以通过此界面来对系统进行按键操作,以达到用户的需求。显示模块的主要配件为LCD液晶屏,不同型号的LCD所拥有的功能是不一样的。显示模块还必须能将检测装置所采集到的数据实时的显示在LCD上,再进行是否溢出的判断。
硬件平台构建好了,还需提供必要的软件模板,以供学生学习、借鉴。子项目系统软件是符合概要设计需求的、具有比较完善功能的系统程序,包含参数采集、参数管理统计、异常情况提示、基本信息管理等模块。子项目系统软件只作为学生学习参考的模板,学生开发的系统不能照搬模板程序。
4成绩评定规则
成绩评定的指导方针是激励学生互相合作、自主创新。学生成绩的评定并不是由指导教师一人评定,而是在大组范围内学生演示的基础上由学生参与打分。具体成绩评价规则如下:
(1) 工程实习以小组为单位,考核整个小组开发任务完成的情况。小组成绩分为4个等级:优、良、及格和不及格。
・小组成绩为优的指标:小组所有成员均积极工作,合作精神好,整体功能及用户界面完成佳,有创新点,并且有较规范的设计文档资料;
・小组成绩为良的指标:小组大部分成员均积极工作,合作精神好,设计任务书中的功能需求均能自主实现,人机界面友好,并且有较规范的设计文档资料;
・小组成绩为及格的指标:合作精神较好,仿照模板软件能完成整个系统设计,系统整体功能联调运行通过,能提交设计文档;
・开发小组出现下面情况之一,小组成绩为不及格:
① 子项目的所有功能仅由某一个同学独自完成,小组其他同学没有参与工作。
② 系统整体不能运行。
③ 所开发的系统未能实现设计任务书中所需求的基本功能。
(2) 学生的个人成绩分成5个等级:优、良、中、及格和不及格。每个学生的成绩与小组成绩挂钩。
・成绩为优的小组,其主要完成者(1~2人)成绩为优,其他同学成绩为良;
・成绩为良的小组,其主要完成者(1人)成绩为优,其他同学成绩为良或中(视承担任务的情况而定);
・成绩为及格的小组,其主要完成者(1~2人)成绩为良,其他同学成绩为中或及格(视承担任务的情况而定);
・成绩为不及格的小组,其主要完成者成绩为中,其他同学成绩为不及格。
参考文献
[1] 方恺晴. 计算机专业实验教学改革的探讨[J]. 实验室研究与探索,2002,21(1):6-8.
[2] 沈建华,姜宁. STR71X系列ARM微控制器原理与实践[M]. 北京航天航空大学出版社,2006.
[3] 廖日坤. ARM嵌入式应用开发技术白金手册[M]. 北京:中国电力出版社,2005.
[关键词]图像处理;FPGA
中图分类号:1P391.4l 文献标识码:A 文章编号:
Abstract: Currently, computer-based image edge detection in various fields occupy an important part, through effective edge detection, can greatly simplify the subsequent image processing of the image information analysis. Therefore, real-time image edge detection based FPGA research and design has been received much attention. This paper studies the FPGA-based image edge detection algorithm.
Keywords: image processing;FPGA
1边缘检测算法
图像锐化就是增强图像的边缘或轮廓[1]。图像边缘是图像的基本特征之一,它包含了图像中丰富的信息,图像边缘增强广泛应用于监控、安防即医疗等领域。20世纪70年代末,美国的麻省理工学院的Marr和HiWretdi提出了一种类似于人类视觉的“边缘检测理论”,从而解开了图像锐化算子研究的序幕[2]。之后,图像边缘特征的提取方法一直是图像处理和分析领域的研究热点。
常见的锐化算子还有罗伯特(Robert)算子,普瑞维特(Prewitt)算子,索贝尔(Sobel)算子,以及拉普拉斯(Laplacian)算子[3]。所有基于梯度的锐化算法之间的根本区别是算子应用的方向,以及在这些方向上逼近图像一维导数的方式和把这些近似值合称为梯度值的方法。
图1-1 Robert算子
罗伯特(Robert)算子是在2×2窗口邻域中计算对角导数,Robert对应的模板如图1-1 所示,差分计算式如下式示:
(1-1)
上式能够提供较好的不变形边缘取向。对于同等长度但取向不同的边缘,用罗伯特算子能获得较好的处理效果[4]。但是由于采用的2×2窗口较小,所以图像处理精度不高。
采用更大窗口的Prewitt算子处理结果相对Robert算子获得了更多的图像边缘信息。另外,罗伯特算子的一个重要问题是由于不包括平滑,所以对于噪声比较敏感,为了解决上述导数算子对噪声相应敏感的问题,可以在图像进行导数运算之前,先对图像进行平滑处理(如局部平均)以减少噪声[5]。普瑞维特(Prewitt)算子从加大边缘增强算子的模板大小出发,由图1-1的2×2模板扩大到图1-2的3×3模板来计算差分。
图1-2 Prewitt算子
依据图1-2的两个模板卷积形成该算子,图像中的每个像素都用这两个核做卷积,一个核对垂直边缘影响最大,另一个对水平边缘影响最大。两个卷积的最大值作为该点的输出值。
两个方向的差分计算式如下:
(1-2)
(1-3)
普瑞维特(Prewitt)算子的差分运算为不加权的平均值差分算子,属于两个互相垂直的平均值差分算子组合。为了增强靠近中心像素点像素值的权重,提出了索贝尔(Sobel)锐化算子。索贝尔(Sobel)算子是一种加权平均算法,该算法理论认为邻域的像素对当前像素产生的影响不是等价的,所以距离不同的像素点具有不同的权值[6],对结果产生的影响也不同,因而具有更好的抑制噪声能力。对应模板如图1-3所示。
图1-3 Sobel算子
具体定义为:
(1-4)
(1-5)
(1-5)
其中, 是图像中对应于3×3像素窗口中心点(x,y)的二维梯度绝对值,Gx是该点水平方向梯度值,Gy是垂直方向梯度值。为便于硬件实现,上式修正为:
(1-7)
拉普拉斯(Laplacian)算子是一种二阶的微分算子,其定义图像 (x,y)的梯度为:
(1-8)
对于离散数字图像,二阶微分算子可用二阶差分来代替,从而拉普拉斯算子可以表示为:
(1-9)
相应的有拉普拉斯算子对应的模板如下图1-4所示:
图1-4 拉普拉斯算子
拉普拉斯算子是一个各向同性、线性和位移不变的边缘检测算子,对细线和孤立的点检测效果好,但拉普拉斯算子丢失了边缘方向信息,常产生双像素的边缘,且对噪声有加强作用,这些都是图像边缘提取中不希望出现的[7]。由于这些原因,通常拉普拉斯算子并不直接用来进行边缘检测,而是需要与其它算法相结合以便利用拉普拉斯算子的特点,比如用高斯函数的拉普拉斯与图像做卷积来检测图像边缘,但无疑这样就更进一步增加了算法的复杂度,拉普拉斯算子本身就已经是一个二阶微分,再与其它算法结合则更不利于算法硬件实现因此,综上所述,本课题设计选用3×3窗口的索贝尔(Sobel)锐化算子,在实现边缘提取的同时尽可能的保留图像背景信息,获得更好的锐化效果。
2 基于FPGA实现阈值锐化算法
上文中己对课题所设计图像处理平台所需要的算法进行了分析和选取,针对FPGA硬件实现的特点还需要对算法做进一步的修正,在3×3方形窗中用像素点来表示,那么式(1-4),(1-5)可表示为:
(2-1)
(2-2)
其中对应像素排列为:
这样,就可以方便的利用VerilogHDL硬件编程实现该算法。对应软件设计公式如下:
(2-3)
(2-4)
(2-5)
参考文献:
[1] 潘松, 黄继业. EDA技术实用教程[M]. 北京: 科学出版社, 2002.
[2] 周润景, 图雅, 张丽敏. 基于QuartusII的FPGA/CPLD数字系统设计实例[M]. 北京:电子工业出版社, 2008.
[3] 赵曙光, 郭万有, 杨颂华等. 可编程逻辑器件原理、开发与应用[M]. 西安: 西安电子科技大学出版社, 2000.
[4] 姜立东. VHDL语言程序设计及应用[M]. 北京: 北京邮电大学出版社, 2004.
[5] 李平. 单片机嵌入式系统复位电路的设计选用[J]. 机电工程技术, 2004, 33(7): 145-146.
[6] 马涛, 赵宇, 来清民. 基于80C552单片机的多芯片同步复位电路[J]. 微计算机信息, 2007, (11): 137-138.