引论:我们为您整理了13篇编译原理论文范文,供您借鉴以丰富您的创作。它们是您写作时的宝贵资源,期望它们能够激发您的创作灵感,让您的文章更具深度。
篇1
由于涉及形式语言、有穷自动机等抽象内容,在“以教师为中心,教师讲、学生听”的传统教学模式下,学生在学习中普遍感觉内容太过抽象、缺乏学习积极性。因此,如何打破传统教学模式、让这门课的教学效果得到较大改观,就成为一个亚待解决的问题。近二十年以来,国内外的许多教育工作者、教育学家、教育技术专家多年来从理论与实践两个方面作了大量的研究与探索,建构主义理论正是这种努力所取得的主要理论研究成果。
1、建构主义学习理论及教学模式
近二十年以来,随着多媒体计算机和Internet网络教育应用的飞速发展,建构主义学习理论正愈来愈显示出其强大的生命力,并在世界范围内日益扩大其影响。建构主义提倡在教师指导下的、以学习者为中心的学习,也就是说,既强调学习者的认知主体作用,又不忽视教师的指导作用。
建构主义学习理论认为“情境”、“协作”、“会话”和“意义建构”是学习环境中的四大要素或四大属性。学习环境中的情境必须有利于学生对所学内容的意义建构;协作发生在学习过程的始终,对学习资料的搜集与分析、假设的提出与验证、学习成果的评价直至意义的最终建构均有重要作用;会话是协作过程中不可缺少的环节,学习小组成员之间必须通过会话商讨如何完成规定的学习任务的计划;意义建构是整个学习过程的最终目标。所要建构的意义是指:事物的性质、规律以及事物之间的内在联系。在学习过程中帮助学生建构意义就是要帮助学生对当前学习内容所反映的事物的性质、规律以及该事物与其它事物之间的内在联系达到较深刻的理解,这种理解在大脑中的长期存储形式就是关于当前所学内容的认知结构。
与建构主义学习理论以及建构主义学习环境相适应的教学模式为:”以学生为中心,在整个教学过程中由教师起组织者、指导者、帮助者和促进者的作用,利用情境、协作、会话等学习环境要素充分发挥学生的主动性、积极性和首创精神,最终达到使学生有效地实现对当前所学知识的意义建构的目的。”在这种模式中,学生是知识意义的主动建构者;教师是教学过程的组织者、指导者、意义建构的帮助者、促进者;教材所提供的知识不再是教师传授的内容,而是学生主动建构意义的对象;媒体也不再是帮助教师传授知识的手段、方法,而是用来创设情境、进行协作学习和会话交流,即作为学生主动学习、协作式探索的认知工具。显然,在这种场合,教师、学生、教材和媒体等四要素与传统教学相比,各自有完全不同的作用,彼此之间有完全不同的关系。但是这些作用与关系也是非常清楚、非常明确的,因而成为教学活动进程的另外一种稳定结构形式,即建构主义学习环境下的教学模式。
2.建立以学生为主、师生互动的教学模式
基于以上理论,在整个编译原理”的教学过程中,应该创造一种良好的氛围,建立以学生为主、师生互动的教学模式。
2.1教师的准备
教师的角色是学生建构知识的忠实支持者。教师的作用从传统的传递知识的权威转变为学生学习的辅导者,成为学生学习的高级伙伴或合作者。教师应该给学生提供复杂的真实问题,教师必须创设一种良好的学习环境、必须提供学生元认知工具和心理测量工具,培养学生评判性的认知加工策略,以及自己建构知识和理解的心理模式。因此,教师在课前应通读教材多遍,并做完习题,然后参考同类教材,把内容烂熟于心。同时,教师应准备教学课件、教学网站等辅助教学资源,真正起到组织引导的作用。
2.2注重启发式教学
建构主义学习理论认为,学习者与周围环境的交互作用,对于学习内容的理解(即对知识意义的建构)起着关键性的作用。教师应组织和引导学生进行讨论和交流,共同建立起学习群体并成为其中的一员,共同对课程所涉及的内容进行讨论。
因此,对于学生自学较容易的章节,采用指导学生备课,然后课堂上由学生讲课、教师总结的方式进行,对于学生的提问,也不是简单的给出答案,而是在课堂上展开师生间的讨论,让所有的学生看到问题从提出、分析到解决的全过程,充分发挥学生的学习主动性,培养学生的创新能力。以下就求Follow集的方法加以简要说明。
在预测分析中,Follow集的定义如下:设G=(V,.,VN,S,P)是上下文无关文法,AEVN,S是开始符号;Follow(A)二{aIS=''''=>wA(3且aEVT'''',aE、F1TST.(}),}.L。V,.`,(3aV''''},若有S=`=>N,A(3,且p=’二>。,则#EFollow(A)。另外,若A-"aB是一个产生式,则把FOIrLOW(A),加至FOLLOW(B)中。怎样系统、快速而准确地求出Follow集?学生在讨论中发现,求Follow集必须从文法开始符号S推导,因此,可以直接观察每条产生式的右部,找出要求Follow集的非终结符(设为A),进一步观察A后面的字符串,若可推出终结符,则此终结符在Follow(A)中,若为。,则产生式左端非终结符的Follow集在Follow(A)中。由此概括出了求Follow集的行之有效的方法。
2.3运用实例教学模式
实例式教学也被称为抛锚式教学、基于问题的教学或情境性教学。是建构主义的教学模式之一。学习者要想完成对所学知识的意义建构,即达到对该知识所反映事物的性质、规律以及该事物与其它事物之间联系的深刻理解,最好的办法是让学习者到现实世界的真实环境中去感受、去体验(即通过获取直接经验来学习),而不是仅仅聆听别人(例如教师)关于这种经验的介绍和讲解。
对于较复杂、枯燥的理论,在教学中大量运用实例,通过讲解一学生练习一学生讲解一学生再练习一教师小结的教学模式,让学生能够从外部信息源提供的特殊的例子出发,进行归纳推理,得到一般的规则或一般性的知识。这样,学生听懂了,理解了,增强了自信心,巩固了理论知识。
2.4合理组织实验和课程实习
课程实验应以编译理论中的一些经典算法的实现为主,一方面可以培养学生的实践能力和动手能力,另一方面可以通过对算法的实现达到更准确、更牢固的理解和掌握这些算法,从而提高学生的实际应用能力。
课程实习应充分考虑编译理论与实际应用相结合,突出开创性和实用性。教师应提供程序源代码而空缺关键模块,让学生来完成。这种组建式的实习方法,使得实习题所涉及的问题难度没有降低,但由于学生只需完成关键的组件模块,学生能够集中精力解决关键问题,实现难度有一定程度的降低。鼓励学生间相互探讨,各抒己见,激发学生的创作研究热情并共同提高。
3.教学效果分析
通过以下两组数据的比较,可以看出应用了新的教学模式后.学生学习情况的变化.说明教学效果得到了较大改观。
篇2
1现代人力资源管理与传统人事管理的概念和区别
医院现代人力资源管理与传统人事管理有着本质的区别。有人形象地说传统人事管理是把人看作蜡烛,不停地燃烧直至告别职业生涯,强调的是组织目标的实现;现代人力资源管理是把人看作蓄电池,可以不断地放电、充电,强调的是人的潜能的不断开发和利用,强调实现组织价值和员工个人价值的双赢目标。概括来说,它们的主要区别如下:
1.1人事管理
主要采用严格的制度、命令式和简单式的监督。精力放在员工考勤,档案、合同管理,职称评定和发放工资福利等事务性工作上,是一种反应性的管理。它忽视员工的主观能动性和自我实现的需要。一般在单位中被定位于行政服务部门。目前国有公立医院基本上都是这种模式。即使一些医院将人事管理门更名为“人力资源部”,但从医院管理体制上可看出,对人员的管理基本上仍是传统的人事管理,这是组织历史以及组织格局和体制的必然。由于其不是基于以人为本的价值理念,没有足够认识到人是“资源”的战略管理意义,加之缺乏足够的公平、竞争的运作环境,所以调整和维系人员对组织献身的精神的,多是组织权力和行政感召,缺乏对个人持续培养、开发从而达到自我实现价值的根本动力。
1.2现代人力资源管理
医院现代人力资源管理是建立在全新的理论与管理思维之上的,它是运用现代化的科学方法,对与一定物力相结合的人力进行合理的培训、组织和调配,使人力、物力经常保持最佳比例,同时对人的思想、心理和行为进行恰当的诱导、控制和协调,发挥人的主观能动性。它带来的是医院人事管理理论和时间观念的全面更新,它是要获取与开发医院服务工作需要的各类、各层次人才,建立医院与医务人员之间良好的合作关系,以人力资源满足社会及公众对医院的要求,满足医院经营管理的发展的目标,也满足医务人员个人成长和发展的要求。在用人机制、运营机制方面均比较灵活,有较强的市场应变能力和市场竞争能力。另外,比较注重以人为本,提倡“人性化”管理,在薪酬分配、绩效评估、员工激励和未来的职业生涯规划等方面更加符合现代医院管理的要求。
2目前国有公立医院人力资源管理的现状
2.1对人力资源和人力资源管理的重要性认识不够,没有树立正确的观念
医疗卫生行业长期处于行政垄断地位,医院没有在市场竞争中实现优胜劣汰,外部环境不需要对人力资源有较高的要求。这是目前公立医院不重视人力资源管理的主要原因。
2.2人力资源管理体制僵化,人才流动机制不完善
目前,许多医院还未真正成为市场的主体,其运行仍由行政部门干预,医院不具有完全的用人自。虽然人才的评估在近年来有所规范,但不同医院的同样职称人才,尤其是高级人才缺乏同质性,真正的自由流动和弹性机制没有建立。医院想要的人进不来,不要的人出不去,想走的人走不了,想来的人来不了,专业人员和管理人员缺乏积极性。其主要有四方面的原因:一是行政管理部门干预过多;二是医院内部人力资源管理机制不健全;三是人力资源的市场机制不完善;四是原来遗留问题的后遗效应。
2.3缺乏科学的绩效评估体系
目前大多数公立医院仍为事业单位,绩效考核沿用行政机关、事业单位工作人员年度考核制度,医院各种专业、层次的人员,风险、技能要求不同,却都在使用统一的考核标准,所考核的内容也很笼统和形式化,难以反映不同岗位不同人员的业绩奉献。
2.4薪酬分配缺乏竞争性和激励作用
近年来,尽管一些医院对拉开收入差距采取了一定的措施,但绝大多数医院仍然在沿用过去的等级工资体系。没有进行工作分析、制定岗位说明书、做薪酬市场调查、绩效考核以及薪酬激励等规范化的人力资源管理。
2.5未重视医院与员工的共同发展
有些医院招聘并录用员工后,没有对其进行医院的价值观教育,医院缺乏良好的文化氛围,使员工难以产生认同感和归属感,团队协作能力不强。
3加强国有公立医院现代人力资源管理的建议
现代医院管理是以人力资源为核心的管理。人力资源管理就是在医院管理中要坚持和贯彻“以人为本”,使“人”与“工作”和谐地融合起来,实现医院和员工“双赢”,达到利益最大化。为加强公立医院的现代人力资源管理,提出以下几个方面的建议。
3.1要树立正确的人力资源观念和现代人力资源管理新意识
人力资源是医院的战略性资源,是具有高增值性的重要资产。因此,人力资源管理者要打破传统的人事管理观念,从单纯的人员行政管理中走出来,主动地去开发人力资源、挖掘潜能,使职工最大限度地释放才能,满足自我实现的需求。在医疗市场竞争中人才就是财富、人才就是效益、人才就是竞争力、人才就是发展后劲,人才是一种无法估量的资本,是一种能给医院带来巨大效益的资本。如果把医院的人才带走,医院会垮掉;相反如果你拿走资金、病房及设备,而留下人才,几年后可重建一个医院。在人力资源中,特别是受到过良好教育和具有创新协作能力的高素质人才,在某种程度上讲,对经济和高科技发展起到决定性作用。“最优秀的人才是免费的”,因为他们为医院创造的价值远远大于了医院付给他们的报酬。因此,人力资源管理者,要坚持“以人为本”的思想,尊重人才、爱惜人才,想方设法做到“用事业凝聚人才、用精神激励人才、用感情关心人才、用适当待遇留住人才”。
3.2建立竞争机制
坚持公开、平等、竞争、择优的选人用人制度。选人用人是搞好医院人力资源管理的第一关,只有建立公开、平等、竞争、择优的选人用人制度,选拔和使用与所需要岗位相匹配的优秀人才,才能为诸如薪酬待遇,培训发展等其他人力资源管理工作奠定良好的基础。要善于公开选拔任用人才,拓宽用人渠道,增加透明度,为各类不同的人才提供和创造发展机遇。中国有句古话叫“英雄不问出处”,只要符合招聘的岗位要求,具备基本的学历、资历和工作经验,就都应该让其应聘,通过优胜劣汰来选拔岗位最佳人选。做好工作分析,岗位评价,制定岗位说明书和岗位规范等基础工作,同时在选拔人才时要严格按照程序运作,这样才能够确保招聘到高素质的优秀人才。
3.3建立职责明确的岗位责任制
医院要想有一个高效的运作机制,必须要相应地建立一套适合本医院特点的组织体系和岗位设置,就是要坚持按需设岗,做到岗位职责明确、任职条件清楚,员工的能力与岗位要求相匹配。同时使该岗位的职责能够充分履行而与上下配合协调,使医院整体获得最大效益。
3.4建立科学、公正、公开的绩效考核制度
绩效考核是对医院员工劳动付出的一种反馈,同时也是支付薪酬的重要依据。在实施考核中必须要有一套能够反映岗位特点和本人(或科室)实绩的科学的考核标准,将不同岗位的责任、技术复杂性、承担风险的程度、工作量大小、科研、教学等不同情况一并纳入考核要素,同时在实施考核中做到公正操作,对事不对人,并将考核结果公开,及时做好反馈工作。
3.5建立公正、公平、合理的薪酬分配体系
薪酬是医院进行人力资源管理的一个非常重要的工具。创新分配机制,建立公正、公平、合理的薪酬体系,对调动员工的积极性,提高医院效益显得尤为重要。薪酬的设计与结构以及水平必须建立在科学的工作分析、工作评价以及绩效考核等基础之上,真正体现按劳分配与兼顾公平的原则。在实际的薪酬分配中,要根据不同的工作态度,工作能力和工作业绩拉开分配档次,向关键岗位与优秀人才倾斜。对临床医技科室医务人员劳务费分配实施岗位量化考核。各科室实行二次分配,把工作绩效作为岗位薪酬、多元分配的主要尺度。对积极开展新技术、新项目和临床科研成绩突出者实行重奖。这样做的目的,一方面是对员工劳动价值的肯定,同时也是稳定和吸引优秀人才的主要措施。薪酬体系合理,使医院的薪酬对内具有公平性,对外具有竞争性。
3.6建立有效的人力资源激励机制和约束机制
激励可分为物质激励与精神激励。有效的激励机制不仅可以调动员工的积极性,激发他们的创造力,而且可以增强医院的凝聚力和竞争力,进而促进医院的不断发展和效益增长。制约机制也称约束机制,就是要求医院员工在医疗服务工作中的行为要符合职业道德规范和医院规章制度,使其行为具有合法性和道德性。只有制约机制与激励机制的相互配套与应合,才有可能获得预想的管理效果。
3.7作好员工职业生涯规划。为员工提供良好的发展空间
职业生涯是一个人在一生中所有的工作经历,特别是指职业、职位的变动以及个人职业理想的实现过程。职业生涯规划,就是根据个人的兴趣、爱好和所具备的知识与技能以及相关的人际背景等各种因素来设计个人的职业发展计划。医院作为员工职业生涯得以存在和发展的载体,必须为每位员工提供一个不断成长和挖掘个人潜力和发挥特长的机会,医院管理者不仅要关注医院目标的实现,更要关注员工个人理想的实现,让他们获得事业上的成功与满足,只有员工的发展与成功,才能有医院的发展与成功。医院只有为员工作长远考虑,员工才能为医院作长远考虑,这一点在现代医院的人力资源管理中是必须明确的。超级秘书网
3.8建立完善的社会保障制度
完善的福利和社会保障制度仅仅在于满足生理需要和安全需要这两个低层次的需要。除我国现有的社会保障体系外,基于医疗行业的特殊性,对一些特殊岗位还要给予职业安全保护,并按国家规定给予各种休假待遇,让员工在为医院的贡献中享受到各种法定的保障。
篇3
近年来,战略人力资源管理思想日益深入人心,理论和实务上也取得了长足的进步。但是,对于战略人力资源管理对组织价值创造的贡献原理,无论是在理论上还是在实务中都存在着许多认识上的模糊和分歧。对这一问题进行澄清,对于组织有针对性地开展人力资源管理工作具有十分重要的作用。笔者认为,战略人力资源管理可以通过获取和保持最恰当的人力资源、实现人力资源管理的战略匹配、充分开发企业人力资源为组织创造价值。
一、通过获取和保持最恰当的人力资源为组织创造价值
1、成功高效的招聘录用系统保证组织能及时、经济、保质保量地获得组织需要的人力资源。组织根据整体战略制定战略性人力资源规划,在此基础上建立动态的招聘录用管理系统。这样,组织始终能对组织内外部环境具有一种高度的敏感。招聘程序看似是在实际的招聘需求发生时才开始启动,实则内外部人力资源供需的信息处理随时都在进行。这样的招聘录用是主动的、有计划的、系统的,因而也是快速高效,成本节约的。最为重要的是,它能保证组织获取的人力资源是组织真正需要的。即新进的员工是合乎组织文化和绩效要求的高承诺、高绩效的“双高”员工。“双高”的实现,避免了组织因新进员工达不到组织的要求而产生的不必要的成本和损失。这包括新员工的知识、技能、态度达不到组织要求而造成的绩效损失及由此产生的培训费用;新员工与组织文化的冲突而导致的员工承诺不足及高离职率带来的成本;员工与组织、员工与工作的不匹配带来的组织核心能力建设的困难等等。
2、战略人力资源管理能够有计划地将组织最需要的员工保留在组织内。这包含两方面的含义,一是让最适合组织需要的员工留在组织内,二是让不适合组织需要的员工离开组织。为了留住组织需要的员工,组织必须从战略上形成留人的机制。组织的人力资源战略与规划、招聘与录用、培训与开发、绩效管理、薪酬福利、员工关系等必须紧紧围绕组织的总体战略并且互相衔接配合,在提高组织绩效的同时不断提高员工的工作生活质量和员工满意度。保持组织需要的员工就能保持组织的人力资本并为人力资本增值创造了条件。与此同时,及时淘汰不适合组织需要的员工可以更有效地保证组织文化和绩效目标的实现。
二、通过战略匹配为组织创造价值
人力资源管理的战略匹配有两个方面的功能:导向功能和凝聚功能。
1、导向功能。战略人力资源管理通过人力资源战略与组织战略的匹配,将组织的各项人力资源管理实践与组织的战略目标紧紧地联系起来。组织的工作分析、工作设计、人力资源规划、招聘录用、培训开发、绩效管理、薪酬管理、劳动关系等各个方面不再单纯地局限于自身的工作考虑,而是更多地从是否有利组织战略目标的实现来考虑问题。而且,组织的各项人力资源管理实践都通过各自的方式有效地将组织的战略意图传达给全体员工(或未来的员工),将员工的期望、态度和行为有意识地导向组织的战略方向。通过保持员工对组织贡献方向的明确性、一致性,战略人力资源管理为组织创造了巨大的价值。
2、凝聚功能。战略人力资源管理通过整体的规划和系统的设计,协调各项人力资源管理实践,实现了人力资源管理职能间的匹配和功能整合,有效地避免了人力资源管理系统内各功能子模块间的冲突和不一致,保证组织人力资源管理系统整体绩效最佳。尤为重要的是,通过人力资源管理系统的内部匹配,组织可以形成强势的主流文化,传播明确的价值和行为取向,提高员工对组织的认知和忠诚,形成合力,从而为组织创造巨大的无形资产,使组织形成可持续发展的核心竞争力。
三、通过充分发挥员工能力为组织创造价值
充分发挥员工能力包括四个方面:一是通过人力资源的合理配置最大程度地发挥员工的能力;二是通过人力资源的合理配置最大程度地发挥员工的能力;三是通过有效的心理契约管理实现员工高承诺;四是通过有效的激励最大程度地发挥员工的能力。
1、通过人力资源的合理配置最大程度地发挥员工的能力。战略人力资源管理讲求人与事、人与人、人与组织匹配,在这种有效的匹配中,实现每个员工效能最大程度的发挥。这是一种用人所长,人尽其才,整体互补式的管理。在实际的管理过程中,首先要根据组织的战略和人力资源的现状进行合理的工作设计。在此基础上,建立组织的人力资源胜任力模型,然后通过人力资源的测试全面了解员工的胜任力状况。再依照用其所长的原则量才使用,实现人与事、人与人、人与组织的最佳匹配。
2、通过人力资源的合理配置最大程度地发挥员工的能力。战略性的绩效管理强调的不是对员工绩效的静态的判断,它注重的是对员工个人、团队及组织整体绩效的动态管理。从绩效目标的设立到绩效标准的确定到绩效考核的实施和绩效改进措施的落实,整个绩效管理过程应该形成一个PDCA的循环圈,在循环的过程中不断发现问题,解决问题,不断实现个人和组织绩效的提高。它管理的是绩效形成过程本身,不把获得绩效考核的结果作为管理过程的重点,而将发现和解决绩效形成中的问题作为管理的重点。
3、通过有效的心理契约管理实现员工高承诺。人力资源的一个重要特征就是它的能动性,它蕴含于作为生物个体的个人之中,其使用不同其它物的资源,要受到个人动机的影响。战略人力资源管理通过与员工达成有效的心理契约,保证了员工对组织的高承诺。在实施的过程中,组织可通过人力资源战略和人力资源制度以及组织的文化有效地向员工传递组织对员工的承诺,并通过人力资源管理的实践逐步提高员工对组织的承诺,最终诱导出员工的企业公民行为,实现员工的社会化。
4、通过有效的激励最大程度地发挥员工的能力。战略人力资源管理注重内在激励与外在激励的平衡。一方面,它强调通过工作设计和员工的合理配置以及组织文化的建设让员工通过工作本身获得激励,通过作为组织的一员获得满足。另一方面,它也重视物质激励对员工行为的重要影响,在薪酬战略中充分注意其员工行为导向功能。而且,战略人力资源管理特别关注内外部激励在一定条件下的转化,并努力创造条件促其向有利于企业战略的方向发展。
四、通过人力资源开发增值为组织创造价值
战略人力资源管理将企业经营过程变成一种人力资本的经营过程。通过人力资本投资,企业可以获取更大的人力资本收益。人力资本增值成为组织增值的一种重要形式,人力资本成为组织最重要的资产。战略人力资源管理实现人力资本的增值首先是通过做好员工的职业生涯管理来实现的。组织根据组织战略和员工测试的结果对员工的职业生涯进行设计,并与员工进行反复、充分的沟通,形成双方认可、切实可行的员工职业生涯管理计划。该计划在实施过程中还可根据实际情况不断进行调整。在员工职业生涯管理计划的指导下,企业和员工共同努力,对员工进行系统的培训和开发。这种培训和开发因其目的明确、学以致用具有良好的效果和极高的投入产出比。
总之,通过实现组织人力资源管理的战略化,人力资源管理部门将由过去的成本中心变成效益中心。战略人力资源管理将成为组织价值创造和核心竞争力的重要源泉。
篇4
1教学内容的选取
针对我校刚升本的一般本科院校,教材采用[2],教学内容的选取应强调对编译原理和技术的宏观理解及全局把握,而不要把学生的注意力分散到一些细节的算法上,在讲述各章的理论的同时要有一些C语言小程序作为例题或习题。免费论文参考网。结合编译的各个阶段,对教学内容的选取如下:
1.1词法分析
本部分主要以正规式、NFA(不确定的有限自动机)、DFA(确定的有限自动机)及其最小化为主线来讲解,同时对词法分析器进行介绍,演示用C语言写的一个简单语言的词法分析器,并要求学生上机实现。
1.2语法分析
这一部分中,上下文无关文法是必备基础知识。语法分析包括自上而下与自下而上的语法分析二种。自上而下的语法分析包括二种:LL文法和递归下降分析方法,这两种方法比较简单进行可进行详细介绍,用一个简单语言的递归下降分析程序作为例子进行讲解效果更佳。自下而上的语法分析出包括二种:算符优先与LR分析方法,由于目前编译器的语法分析中已不再采用算符优先方法,因些可只作简单的介绍就可以了。LR分析方法是比较重要的语法分析方法,但由于SLR分析、规范LR分析和向前看LR分析非常复杂,讲解时需要占用较多的课时,不介绍这几种LR分析表的生成算法可直接介绍LR分析表的使用较好。因此,在介绍自下而上分析的一般概念和使用LR分析表进行移进归约分析后,可以直接介绍分析器的自动生成器,并介绍归约时的语义动作,为下面阶段语义工作的描述奠定基础。
1.3语义分析和中间代码的产生
静态语义检查通常包括:类型检查、控制流检查、一致性检查、相关名字检查,重点应放在类型检查上,类型系统在编程语言的设计中占据重要位置,讲解时先介绍类型系统在编程语言中的作用,然后用语义动作来表达类型检查算法。
中间代码生成主要介绍各种形式的中间语言,把赋值语句和各种控制流语句翻译成中间代码的语义动作。对于类型和变量声明语句,重点关注怎样按语言的作用域规则组织符号表。符号表中符号的插入和查找方法在数据结构中已经阐述过,只需稍作提及就可以了。
1.4属性文法与语法制导翻译
语法制导的定义和语法制导的翻译方案是描述编程语言翻译的两种常用形式方法。它们描述严格并便于理解,因此大部分有一定深度的教材都用它们来描述静态语义检查和中间代码生成等。这一部分内容较难,简单加以介绍,让学生有所了解即可。
1.5运行时存储空间的组织和管理
这是最需要搞明白部分。尤其在用C这样比较低级的语言时,掌握这部分内容对编写程序和程序排错都很有帮助。具体应该介绍局部存储分配策略(即一个活动记录中各类数据的组织),静态分配、栈式分配和堆式分配等三种全局存储分配策略,非局部名字的访问方式和各种参数传递方式的实现。
1.6代码生成
选择一种采用简单的寄存器分配策略的代码生成算法加以介绍,让学生对代码生成有所了解即可。
1.7代码优化
用实例来介绍各类优化,让学生明白编译器能完成哪些优化,而不要给学生介绍各种优化算法。这对编程有用处,例如,在可读性好的源代码和优化的源代码两者之间做选择时,若知道那些优化可以由优化编译完成,则宁可选择可读性好的代码。
2.实验内容的选取
设计一组适宜实验内容:首先,要将编译理论和方法在实验中得以概括,使学生不仅掌握它们本身具体应用,而且掌握由这些理论和方法所构造编译程序的各个部件是如何在整个系统中协调运行,这是实验最重要目的之一。其次,必须合理地简化,使学生比较容易完成。针对编译原理课程的特点及要求,共设置了五个实验项目。这组实验既和理论课内容相辅相承,同时相互之间又互相关联,构成了一个实验整体。
实验一:消去C、C++程序中的注释(2学时,必做)实验目的: 掌握C语言文件的基本操作,消除源C语言程序中的注释,为以后的编译提供方便。实验要求:对给定的带注释的C语言源程序,利用该程序去掉注释,输出去除注释的源程序。
实验二:词法分析(必做,4学时)目的:通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。免费论文参考网。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。要求:编写程序对输入的源程序字符串进行词法分析,对符合下述文法描述的字符串,建立单词符号表,不符合的字符串给出错误信息。
实验三:递归下降分析法(4学时,选做)目的:根据给定的文法编制调试递归下降分析程序,以便对任意输入的符号串进行分析。本次实验的目的主要是加深对递归下降分析法的理解。要求:对给定的文法,利用递归下降分析法对任意输入的符号串进行分析语法分析,对符合下述文法描述的字符串(表达式或赋值语句),给出中间代码,不符合的字符串给出错误信息
实验四:语法分析程序LL(4学时,必做)目的:通过该实验使学生掌握描述语法规则的文法,以及加深对语法分析中自顶向下分析法中的预测分析法的理解。免费论文参考网。要求:对给定的文法建立预测分析表,利用预分析法对实验一中词法分析产生的符号进行语法分析,对符合下述文法描述的字符串(表达式或赋值语句),给出中间代码,不符合的字符串给出错误信息。
内容:用扩充的BNF表示(同实验三)。
实验五:语法分析程序LR(4学时,必做)目的:通过该实验使学生加深对语法分析中自下而上分析法中的LR分析法的理解。要求:对给定的文法手工建立LR分析表;利用LR分析法对实验二中词法分析产生的符号进行语法分析,对符合实验中文法描述的字符串(表达式或赋值语句)给出中间代码;不符合的字符串给出错误信息。内容:用扩充的BNF表示(同实验三)
3.小结
编译原理课程在计算机课程体系中的重要地位,决定了其课程建设和改革的长期性,对培养计算机专业的人才也有着重要的作用,探索该课程的教学方法,提高教学质量是从事计算机教育工作者的必须重视的问题,也是一个永远值得探讨的问题,我们根据我系的实际情况合理的运用现代手段,综合考虑多种因素,将该课程的教学改革推向更科学的发展道路。
【参考文献】
[1]张昱,陈意云,郭宇,李兆鹏. “编译原理”课程的教学内容选择的探讨. Computer Education,vol18,no 4,2009.
篇5
在大学里,学习一门课程,不能简单、肤浅地看成是对这门课程所含内容的研究、设计和开发,而是关注是否在有限的时间内最有利于学生专业能力的培养。计算机是一门技术性、工程性和应用性很强的学科,有其自身的基础理论支撑体系。“编译原理”课程本身以计算机专业基础知识为载体,含有问题求解的典型思想、技术和方法,整个课程的内容对培养学生的计算思维,程序设计与实现,算法设计与分析,计算机系统的认识、开发和利用等学科基本能力都非常重要。并且,编译技术在计算机体系结构设计、提高软件开发效率与质量的工具开发等方面有着重要的应用。因此,“编译原理”课程不但有存在的价值,而且对于计算机专业学生的能力培养和素质提高有着极其重要的作用和意义。
作为计算机专业的教育工作者,应该结合当前计算机的发展状况,重新认识“编译原理”课程的重要性,并根据当前的教育和就业形势,积极研究、改进“编译原理”课程的教学和实验方法,提高教学效果和质量。
一、明确“编译原理”课程对学生能力培养和素质提高的重要性
从课程体系总体设计看,“编译原理”课程的主要教学目标之一是使学生在系统的级别上重新认识算法和程序,提升学生的系统能力。它是计算机专业课程中最难学的课程,既涉及形式语言和自动机等抽象理论,又是数据结构、程序设计语言、算法和软件设计等知识的综合体现,有效培养了计算机专业学生应具有的计算思维,算法设计与分析,程序设计与实现(硬件和软件实现),系统的认知、分析、开发与应用等四大基本能力。
计算学科问题求解的基本思路是“问题-形式化描述-计算机化”,以抽象、理论、设计为其学科形态。“编译原理”课程中要求学生掌握的包括程序变换基本概念、问题描述和处理方法(自顶向下、自底向上、逐步求精、递归求解,目标驱动,问题分析、问题的抽象与形式化描述,算法设计与实现,系统构建、模块化)等知识、思想和方法,有利于学生养成“问题、形式化描述、计算机化”问题求解的习惯,实现从“实例计算”到“类计算”和“模型计算”的跨越。这其中既有明确的、便于抽象的问题,又有较成熟的理论,而且在限定规模下又容易实现(设计),涉及的是一个比较适当的抽象层面上的数据变换,所以该课程是计算机专业本科生的重要专业技术基础课程。
二、“编译原理”课程“教”与“学”的新思考
目前,在“编译原理”课程教学中,“教”与“学”两方面的问题都很突出:一些抽象的重要理论使学生学习的畏难情绪严重,加上有些人认为毕业后很少有机会参与设计与实现编译系统,使得该课程的“教”与“学”的热情偏低,而适用于新型体系结构及新一代计算机系统的编译器的需求和大量应用,也给“编译原理”课程内容的充实与更新提出更高要求。
作为教师,要让学生深刻认识到:“编译原理”是许多课程知识的集成与实践,能进一步加深对许多专业基础课程知识的理解;编译程序所使用的原理、方法和技术有利于领悟计算机理论的精髓,在非编译系统的实际应用中也发挥着很大作用;学习编译对今后从事应用软件,语言开发平台、编译系统甚至操作系统的开发等工作非常有益。
实践证明,如果首先让学生认识到课程内容的重要性,再辅之以合适的教学方法和教学手段,是不难取得好的教学效果的。根据笔者的“编译原理”课程教学经验,认为对于该课程的设置和教学可以从以下几个角度来开展。
1.科学设置课程
对于“编译原理”课程的设置问题,可以根据本科院校自身办学宗旨,从普通高校本科、重点高校本科和研究生阶段教育三个层次来考虑教学目标和培养要求等因素,在总学时的限制下,实现总目标的最佳课程。因此,可以考虑以下2种模式。
(1)课程分解模式。分为:“编译技术”(必修),介绍为满足基本应用而需要学生掌握的基础知识、方法和技术,以达到语言转换和实现理论基础介绍的目的;“编译理论”(选修),主要偏重于介绍形式化等原理性的深层次内容,方便有进一步深造需要的学生学习。
(2)内容分解模式。不单独设置一门“编译原理”课程,根据深浅和涉及到的具体问题,将与其他课程相关的内容分解到不同的课程中去,使学生在相关课程的学习中逐步掌握相关知识。这和前者比有一定难度:一是课程难分解,课程内容分解后与其他课程内容的重新整合在短时期内难做到科学分解与组织;二是增加了其他课程授课教师的工作量与难度。
2.优化教学内容
教师还要坚持教学与科研相结合,将最新的教改和科研成果引入教学,将经典编译理论与现代编译技术有机地结合起来。例如,可以将嵌入式编译器、分布并行编译器、多核编译器以及适应新体系结构及新一代计算机系统编译器的研究及其研究结果迅速充实到“编译原理”课程中。此外,还可以向学生介绍编译技术在人工智能、并行计算、自然语言处理等领域里的具体应用,为后续课程做好铺垫。
3.用实例演示来形象化抽象理论
学生学习“编译原理”课程的最大困难是其较为抽象,要获得好的教学效果,就要将抽象理论形象化。改革教学方法,提倡互动式、研讨式和案例式等教学方法。一方面,可以通过实例类比,例如,用自然语言的翻译过程来类比编译程序执行高级程序设计语言的翻译过程。另一方面,教师可以借助多媒体手段,把抽象的原理用动画、图像等形象化的方式展示,便于学生的理解。同时,还可以向学生推荐网上优秀的“编译原理”课程教学网站、电子书等资源,拓宽学生视野,培养和激发学生学习兴趣。
4.把握联系,启发学生积极思维
在教学过程中,充分考虑“编译原理”课程与数据结构、计算机组成原理、操作系统、算法分析与设计等先修课程之间的内在联系,不断深入和强化,以加强课程的系统性,培养学生的全局观。同时还要把握编译过程各个功能阶段的内在联系与规律,有目的地设计问题,有意义地提出问题,通过问题把编译原理中的理论难点、抽象概念引导出来。
三、重视实验,建立行之有效的实验教学方法
设计和组织良好的实践教学环节可以使“编译原理”课程获得良好的教学效果。现在很多高校都增加了实验学时,并独立计算实验成绩。我们在借鉴兄弟院校和国外经验的基础上,摸索出验证性实验加综合设计性实验的2阶段实验教学模式,各高校可根据自己的教学目标和培养要求来选择实施。
1.验证性实验
这类实验主要是为配合配合课堂授课内容,由教师按编译原理授课顺序,提供同步的若干验证性实验题目,让学生逐个完成相关子模块,逐步扩大完善整个编译程序。这样循序渐进地完成实验,不仅增加了学生的成就感和自信心,而且使他们养成扎实的作风,使学练互动,激发学生学习兴趣和积极性。而作为教师,则要做好组织、监督和解惑工作,帮助学生掌握编译系统主要技术、算法的理解和设计,引导学生从整体上把握编译系统的结构和各子系统之间的协调工作。
2.综合设计性实验
一定规模的综合设计性实验训练是保证实践教学效果必不可少的环节。我们可以让学生以小组(由4~5名成员)为单位结合软件工程课程实验的环节完成一个规模适度的编译程序开发。在实际操作时,可根据验证性实验阶段的情况,把学生分成不同层次的小组,由他们选择适合自己水平的不同的实验题目。每组遵循完整的编译器开发方式,融入软件工程的思想,由大家推举的组长分工、协调完成任务。这样,不仅能让每个学生体验从分析设计、编码测试到交付维护的软件开发全过程,还提高了他们的工程和团队意识以及开发大型软件的协调结构设计能力。实验结束时,教师要求学生以演示系统、答辩的方式公布实验成果,以便公正评分。
篇6
我们知道,早在几十年前,伟大的物理学家爱因斯坦就已经提出了统一场论;一直以来许多科学家,为了把万有引力与电磁力统一起来,进行了不懈的努力;但是由于他在广义相对论中提出的引力理论与经典电磁理论是格格不入的初中物理论文,因而也给统一理论制造了难以克服的障碍,所以许多科学家试图从更微观的角度来统一它们,因而提出了超弦理论,虽然理论的推导取得了一定的进展,但是确越推导越复杂,许多问题至今仍然无法解决,因而许多科学家也在进行反思,是不是我们前进的方向不对,本人经过近二十年的努力,总结出一个能够验证它们是不是同一种力的实验初中物理论文,即重物悬吊实验,具体实验方法如下:
实验器材:1、导电性能良好的金属或合金容器(在金属容器的上方设置一个圆形的上盖,可以放入或拿出重物;在上盖的中央设置一个圆形的小洞,可以来回穿过绳子)。2、放金属容器的绝缘物体,3、重物,4、绝缘的绳子,5、吊重物用的滑轮,6、拉力计。实验目的:验证统一论。实验步骤:第一步:把金属容器放在绝缘物体上论文提纲格式。第二步:把滑轮固定在金属容器的正上方。第三步:把绳子的一端穿过滑轮和金属容器的上盖、拴在重物上。第四步:拉住绳子的另一端,将重物吊起,放入金属容器内。吊在金属容器的中央初中物理论文,然后盖上容器的上盖。
第五步:将拉力计的一端固定,绳子拴在拉力计的另一端。第六步:记下拉力计的刻度(即重物的重量)。第七步:给金属容器充上尽可能多的大量的同种电荷。
实验结果:如果电磁力与万有引力(重力)是同一性质的力,电磁场与引力场(重力场)是同一性质的场,那么当金属容器的表面充满大量同种电荷的时候,金属容器外的电磁场与引力场(重力场)就能够发生自动的相互中和论文提纲格式。这时的引力场就可以看做是一种电磁场;重力(引力)就可以看做是一种电磁力。根据处于静电平衡状态的导体内部场强处处为零的原理,可知金属容器内的场强应该处处为零,因此重物在金属容器内所受外力的合力应该为零,因此拉力计的刻度会自动归零。反之,如果它们不是同一性质的力,当导电金属容器表面充满大量电荷后初中物理论文,容器周围的电磁场和重力场(引力场)就不能相互中和,容器内重物所受的重力与电磁力就不会相互中和,拉力计的刻度就会保持不变。当然根据爱因斯坦的统一场论可知,实验的预期结果应该是第一种,重物在处于静电平衡状态的带电容器内,受到的重力与电磁力的合力应该为零,拉力计的刻度归零。
参考文献:
篇7
0引言
目前,国内外已有很多有关计算机语言类课程的考试软件,它们大多已能很好地完成对常见客观试题的自动评阅工作,但是对于一些主观性很强的题目,尤其是程序设计题,还没有很好的解决方案。其中主要采用的是结果评分法,即只依据程序运行结果给出相应分数,而并不查看考生程序内容。在这种评分机制下,程序中一个小小的错误就将导致一个几近正确的程序无法运行,从而因无运行结果,考生将丢失全部分数。这与传统人工阅卷中的评分原则是不相一致的,评分结果也并不能反应出考生的真实水平。本文以常见的C语言课程为例,对C语言程序设计题的自动评分方法进行了研究,在比较结果的评分方法基础上,设计了动态评阅与静态评阅相结合的方法,评分结果更加公正、准确。
1指导思想
经过大量分析与研究,我们设计了动态评阅和静态评阅相结合的方法实现对程序设计题的评分。具体步骤如下:
(1)结果对比。检查考生程序的结果文件,若与标准答案文件中的结果一致,则可得满分。若不完全一致,可依据正确输出数据的数量以予一定比例的得分。
(2)动态评阅。对于无结果的考生程序,我们可在系统控制下对其进行模拟运行以获取运行结果。对有语法错误的考生程序,可以通过词法分析和语法分析程序找出错误,同时设计改错算法尽最大可能改正考生程序中的错误,最终使程序得以运行并保留错误信息。若考生程序经评改、运行,获取了正确结果,则可依据错误信息从总分中扣除相应的分数。若仍无法运行或结果不正确,则采用静态评阅。
(3)静态评阅。所谓静态评阅,是指通过对考生程序中语句的静态检查获取评阅信息。系统事先在程序设计题的题库文件中根据考试题目设置有多条关键语句,评分时,通过检测考生程序中关键语句的数量可判断其逻辑合理性,给出相应分值。
尽管上述评分方法,仍不可能做到像人工阅卷一样实现真正的按步骤评分,但相对于以往只按结果评定成绩的评分方法,相信该系统还是有积极意义的。由于考试题都是较小的程序,评分可以做到较大程度的准确。
3解决方案
程序设计题的评分最为复杂,在确定了程序设计题评分目标后,着重从以下四个方面进行了考虑:
(1)通过运行结果判定程序功能是否实现
我们要判断一个程序是否正确,就是要看其是否完成了要求的功能,即程序的运行结果是否与实际应有的结果相符。C程序的运行结果是可以通过数据文件保存起来的,因而只要我们合理设计考题源程序中的部分内容,即在程序中指定程序结果的存储文件,则在考生答题结束后,我们即可依据该结果文件中的内容是否与标准答案相符来判定考生程序的正误。标准答案文件可在抽取试题时同时生成。
(2)采用“以程序改程序”的方法对错误的考生程序进行评改,使其趋于正确
C语言源程序文件是扩展名为.C的文本文件,可被作为普通文本文件一样进行读写处理。一个没有运行结果的程序不外乎两种情况,或是有语法错误,或为死循环。针对前者,我们可以采用词法分析及语法分析方法进行处理。词法分析和语法分析任务有两个,一是找错,即要尽可能地找出程序中的词法及语法错误,生成错误文件;二是改错,要将发现的每一处错误尽最大可能修改正确,以便程序得以运行。编译原理讲述了开发高级语言编译器的一整套原理和方法,我们可以借鉴这些原理和方法,结合C语言自身的特点设计出详实的改错算法。
(3)在程序中编译运行修改后的考生程序
编译器的设计是相当复杂而繁重的工作,由少数人在短期内去开发一个全新的编译器是不现实也是不可能的。Turbo C提供有行编译命令TCC.EXE,其使用方法类似于一般的DOS命令,可以将C程序直接编译为目标代码和可执行程序。据此,评分程序可在Visual Basic中借助Shell函数调用TCC命令程序,从而对考生程序进行编译。通过检查编译结果即可执行文件是否生成,可判定考生程序是否正确。可执行文件为.EXE文件,可作为外部程序被其它程序所调用。若可执行文件生成正确,可再通过Shell函数调用可执行文件使考生程序得以运行。
(4)用API函数防止系统崩溃
如果考生程序为一个死循环程序,被 Shell启动后将使系统陷入崩溃。Windows提供有很多控制应用程序运行的API函数。论文参考。为防止此种情况发生,可利用VisualBasic调用相应的API函数来处理。
(5)通过合理设计关键语句,检验考生程序的逻辑准确性
对于运行结果不正确,或经过评改仍无法运行的程序及死循环的程序,如何评阅以给出较合理的分数呢?这个问题其实就是要检验程序的逻辑合理性。一个可用多种方法编制的程序,由于其功能是确定的,因而其所采用的基本算法应是一致的。如求1至100的和,则不论用哪种循环语句,其基本算法都应是累加求和。考虑在给出的考生源程序中,可事先设定好存放结果的变量,并对程序中其它变量的命名加以适当规定,如循环变量必须使用i、j、k等。经过这样的设计,使得试题程序中存在有部分确定的关键语句。在编程题的题库文件中,我们可事先存放好正确的关键语句,评分时通过查找考生程序中这些关键语句的数量,即可给出相应的较合理的分数。
由于本系统主要用于对在校学生C语言基础应用能力的考核,要求考生编制的源程序均不是很复杂,因此经过上述一系列的评改方法,本系统对考生程序是能够给出一个较合理的考试分数的。与以往以结果论成败的评分方法相比,本系统给出的评阅结果将更加接近于人工阅卷的结果。
4 系统设计
(1)功能结构分析
对程序设计题进行自动评卷较为复杂,主要包括两个方面:一是要检验结果的正确性,二是要检测程序的语法和逻辑是否符合要求。程序设计题阅卷评分系统的功能结构图如图1所示。
图1 程序设计题评分系统功能结构图
(2)评阅流程设计
经过对C程序结构的透彻分析与研究,对程序设计题的评阅主要采用结果对比、静态评阅与动态评阅相结合的方法,具体步骤如下:
1)结果对比
检查指定的结果文件是否存在,若存在则与标准答案文件进行对比。与标准答案文件内容完全相同,则说明结果正确,得满分,否则转去静态评阅。若无结果文件,执行动态评阅。
2)动态评阅
①对考生源程序进行编译连接,若生成可执行文件成功,则运行考生程序并进行结果检查,若生成失败,说明考生程序存在语法错误,转入以下过程继续处理。
②对考生源程序进行词法分析。扫描源程序,将其转化为特定格式的TOKEN串,存入TOKEN文件。
③根据词法分析的结果,即TOKEN文件,进行语法分析。论文参考。详细指出程序中存在的语法错误,生成错误文件,在保证不对考生程序正确部分产生破坏的前提下,尽最大可能将考生程序修改正确,生成修改后的TOKEN文件。
④调用转换程序将修改后的TOKEN文件重新生成为C语言源程序,其与考生源程序不同名,称其为新生源程序。
⑤调用TCC程序以命令行方式对新生源程序进行编译连接。论文参考。
⑥编译连接成功,运行新生源程序的执行文件,并调用API函数控制程序运行, 以防由于死锁的发生导致系统崩溃;编译失败则退出动态评阅过程,改用静态评阅。
⑦对新生源程序的运行结果进行检测,若有结果,则转去进行结果比较,若无结果则转去进行静态评阅。
3)静态评阅
从程序设计题题库文件中读取该试题的关键语句,对考生程序进行检测。根据检测出的考生程序中的关键语句的条数判断程序的逻辑合理性,给出相应分值。
5 结论
本文提出了一种较新的C语言程序设计题的自动评分方法,对其进行了系统的研究与设计。通过运用编译原理的理论编写相应的评改算法,可实现对C语言程序设计题的自动评分,此种方法已经过代码设计初步实现,经测试,评分结果更加人性化,更加接近于人工阅卷的结果。此种评分方法对于如C++、JAVA等程序的自动评分方法的设计,具有一定的参考价值。
参考文献:
[1] 段汉周,凌捷,郑衍衡. Visual Basic程序设计考核自动评阅系统中若干问题的研究. 计算机工程,2001,27(4)
[2] 李丁. 计算机考试系统中自动评分策略的研究与实现.计算机与现代化,2002(9):8
[3]王春霞. 自动阅卷系统的开发. 盐城工学院学报,2002,15(1)
篇8
1 引言
LPC2124是基于一个支持实时仿真和跟踪的16/32位ARM7TDMI-S CPU的微处理器,并带有256KB嵌入的高速Flash存储器和16KB的RAM。LPC2124具有教小的64脚封装,极低的功耗,多个32位定时器,4路10位ADC,PWM输出,46个GPIO以及多达9个外部中断,并且内置了多种串行通信接口物理论文,支持JTAG、ISP、IAP等多种编程方式,使得LPC2124能够适用于工业控制、访问控制、医疗系统以及其他各种类型的应用[1,2]。
Proteus软件是由英国Labcenter Electronics公司开发的EDA工具软件,是一款新型的嵌入式系统设计、分析与仿真软件。Proteus软件不仅能够实现数字电路和模拟电路的设计与分析,而且还能够实现微处理器与外设的混合电路设计,可以直接在原理图的基础上进行微处理器的软件协同仿真和功能验证。Proteus软件只带汇编编译器(不支持C语言),但可以将其与Keil集成开发环境进行联调,达到很好的仿真效果[3,4]。
本文设计的精确计数系统功能为:当按下按钮时,数码管的计数加1,当放开按钮时,数码管的计数保持不变;开始时数码管的计数为0,当数码管的计数达到15(即16进制的F)时又重新从0开始计数。系统软件的设计采用Keil软件完成,编译连接之后得到可执行的hex文件;系统硬件的设计采用Proteus软件完成;软硬件的协同仿真是在Proteus中加载hex文件进行精确计数的测试。
2 硬件系统的设计
精确计数系统采用LPC2124微处理器作为核心器件,并为其提供了两组电源分别为3.3V和1.8V。硬件系统主要由以下四部分电路组成:XTAL1和XTAL2两个端口连接晶体振荡器组成时钟电路,RST端口连接一个按钮组成复位电路物理论文,P0.0-P0.6端口连接一个共阴极的7段数码管组成输出电路,P0.7端口连接一个按钮组成输入电路论文格式。在精确计数系统中,P0.0-P0.7共8个端口的功能都是GPIO,P0.0-P0.6共7个端口的方向都为输出模式,P0.7端口的方向为输入模式[5]。采用Proteus软件设计的硬件系统原理图,如图1所示。
图1 硬件系统原理图
3 软件系统的设计
精确计数系统软件的设计主要在于对LPC2124微处理器相关寄存器的设置,从而控制数码管计数的显示。软件系统的设计采用Keil软件完成,并最终得到可执行的hex文件。软件系统的设计主要通过以下几个步骤来实现,程序流程图,如图2所示。
图2 软件系统流程图
1.初始化系统时钟并设置相应的寄存器。晶体振荡器的频率为10MHz,LPC2124微处理器的时钟频率为60MHz,设置相应的寄存器程序如下:
PLLCON=1; //使能PLL
PLLCFG=(60/10-1)|(1<<5); //M=5+1,P=1
2.初始化相应端口的功能为GPIO,设置相应的寄存器程序如下:
PINSEL0=PINSEL0|0xFFFF; //P0.0-P0.7共8个端口功能为GPIO
3.初始化相应端口的方向为输入或输出模式,设置相应的寄存器程序如下:
IO0DIR=0x7F; //P0.0-P0.6共7个端口为输出,P0.7端口为输入
4.开始计数数码管显示0物理论文,设置相应的寄存器程序如下:
IO0SET=0x3F; //P0.0-P0.5共6个端口输出高电平,P0.6端口输出低电平
5.循环检测按钮是否被按下,并进行相应的处理,程序模块如下:
void button_test( )
{
int i=0,key;
unsigned charledcode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,
0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; //显示0-9,A-F的笔段代码表
while(1)
{
key=IO0PIN&(1<<7); //获取P0.7端口的电平,即检测按钮是否被按下
if(key==0) //按钮被按下
{
i++;
if(i==16) //计数器加到16
{
i=0;
IO0CLR=ledcode[15]; //清除数码管上次计数的显示
}
else
IO0CLR=ledcode[i-1]; //清除数码管上次计数的显示
IO0SET=ledcode[i]; //数码管显示新的计数
while(1)
{
key=IO0PIN&(1<<7);
if(key!=0) //按钮被放开
break;
}
}
}
}
4 仿真与结论
精确计数系统软硬件的协同仿真是在Proteus中加载hex文件进行计数的测试。经仿真测试结果表明:本精确计数系统能够根据按钮的按下与否准确进行0到15(即16进制的F)的计数,并通过数码管进行准确显示,达到了设计的目标要求。同时,在此基础之上,可以对系统的软硬件功能进行扩充,以适用于其他方面的应用。
参考文献:
[1]韦文祥,朱志杰,车琳娜,郭宝泉.基于LPC2124的一个远程系统软件升级方案[J].单片机与嵌入式系统应用,2006,5:46-49
[2]晏五一,朱志杰.基于LPC2124的远程配电变压器监测终端设计[J].电力系统,2007, 26(7):31-34
[3]杨校辉.Proteus在ARM系统设计中的应用[J].单片机与嵌入式系统应用,2009,8:77-79
[4]张勇.基于Proteus平台的32位单片机LPC2114虚拟串口通讯仿真[J]. 集成电路通讯,2008,26(1):8-12
篇9
作为信息产业的核心和国民经济信息化的基础,软件产业日益受到国家的高度重视。权威数据显示,我国软件产业每年人才需求量近一百万,然而令人尴尬的是,许多软件企业却招聘不到真正合适的软件人才。信息社会不断增长的软件人才需求与优质软件专业教育供给不足的矛盾已成为计算机高等教育发展面临的一个重要问题。
2001年12月,经国家教育部和国家计委联合发文批准,全国首批35所示范软件学院正式成立,目的是批量培养具有国际竞争能力的高层次、应用型、复合型软件工程人才。自示范软件学院成立以来,我国软件工程教育事业得到了很大发展,学科建设逐步走向成熟,初步实现了与国际学科发展的接轨,软件工程教育实现了历史性跨越。
然而,软件工程是一个迅速发展的交叉性学科,相关的新概念、新技术、新方法不断涌现,这就要求教育机构要不断调整策略,以应对专业的快速变化。尤为突出的是,无论是全国首批35所示范软件学院还是非示范软件学院,大部分都根植于计算机学院,因此很多软件工程专业学科课程体系与计算机科学与技术专业基本相似,而计算机科学与技术专业的教学内容是远远不能适应软件工程学科的发展要求的。
从根本上解决上述问题的关键是,结合中国软件产业和软件学院已有的硬、软件基础设施及办学的具体情况,研究和定制适合本学院特色的软件工程学科的课程设置、教学内容、教学方法,形成一个良好的软件工程学科课程体系,使软件工程教学更具先进性、目的性和系统性,其中对计算机科学核心课程的工程化改造势在必行。
本文将研究计算机学科的“编译原理”课程在软件工程专业如何进行工程化改造,怎样创建适合软件工程专业知识体系要求的“编译原理”实践教学,从而在科学的软件工程学科课程体系的保证下,形成一个融基础理论、实验教学、工程实践为一体的整体化培养机制,以适应软件工程学科教学要求,使软件工程学科教学质量得到不断发展,使软件工程专业教育得到健康稳步发展,培养社会需要的软件人才。
1 “编译原理”的工程化实践教学体系
1.1教育教学理念
工程化实践教学就是树立工程化能力培养与基础理论教学、专业能力培养并重的教学理念,把工程化教学作为人才培养的核心任务之一,通过全面改革软件工程专业的人才培养模式、调整课程体系、充实教学内容、改进教学方法,在教学过程中全面体现能力和职业素质培养的思路,并将软件工程知识内容由浅入深、阶梯状、循序渐进地贯穿在工程化实践教学的各个开发项目中。
基于上述软件工程专业的知识体系、本科课程设置的指导原则以及工程化实践教学教育教学理念,下面将给出“编译原理”课程的工程化实践教学体系。
1.2 “编译原理”的工程化实践教学体系
如图1所示,“编译原理”课程的工程化实践教学体系由六个部分组成:编译原理课程工程化实践教学环境、编译原理理论教学、软件工程能力培养、阶梯状迭代工程实践项目、配套教材和评价体系。构建理念为以计算机科学为基础,以软件工程为核心,以目标应用为导向。
1.2.1 “编译原理”课程工程化实践教学环境
“编译原理”课程工程化实践教学环境由实验室、项目团队、教师讲座以及团队汇报组成。
(1) 实验室。以工程化培养理念指导教学实验室建设,为“编译原理”课程工程化实践教学提供强有力的基础设施支持。提供全天开放机房,机房实行开放型管理。项目开发时间规定为开时间和闭时间,闭时间为固定时间,要求授课教师到机房现场指导,开时间内,学生可以自由选择时间,以小组为单位进行自行讨论、设计,要求实验室人员在现场,以便解决设备问题。机房的使用和维护要有严格的管理制度,保证项目的顺利完成。
(2) 项目团队。将4~5个学生分为一个项目小组,一名组长作为负责人;每名学生分配一台微型计算机,在开发小组中以分工协作的方式完成指定的软件开发任务,完成项目设计报告,并提交完整的软件开发文档和源代码。学生在团队环境下使用最新的软件开发工具,获得较真实的软件开发经验,提高学生在项目规划、队伍组织、工作分配、成员交流等多方面的能力,培养学生团队合作及工程项目研发能力。
(3) 教师讲座。指导教师在整个的项目开发中纵览全局,项目的开始、结束及中间的每个模块都要进行全面的讲解、引导和组织。教师要系统讲解软件工程知识点和软件技术,统一讲解项目开发过程中学生普遍存在的问题,不断地发现问题,解决问题。
(4) 团队汇报。理论教学中教师唱主角,而工程化实践教学应让学生唱主角,让开发小组自己拟定演讲方案、内容,由教师审核修改后进行汇报演讲。这样可以有效地提高学生总结概括、研究立项、口头表达、演讲和交流沟通的能力,培养学生独立思考、分析问题的能力和创新能力。
1.2.2 “编译原理”理论教学
由知识的先期注入和工程化理论教学组成。
(1) 知识的先期注入。“编译原理”课程的理论性较强,整个课程内容由几个功能模块组成,学生对课程的完全理解应在最后一个模块,即课程结束时。鉴于教学内容的特殊性,应在一门程序设计语言之后安排“CO释程序的面向对象设计与实现”项目,作为前导实践环节,配套教材为《C++实战:解释程序的面向对象程序与设计》。这可以使学生在学习理论之前对程序设计语言的解释执行有较深的理解,由传统的“填鸭式”被动学习转变为学生自主式学习。学生对“编译原理”课程的学习由问“这是什么”变成“这是我需要的什么”,从根本上解决了“编译原理”课程的教学困难。实践表明,这种方法在锻炼学生实践能力的同时先期注入了理论教学需要的解释程序的知识和概念,有很好的教学效果。
(2) 工程化理论教学。编译程序是庞大而复杂的,这使得如何介绍编译原理本身就是一个难题。中外编译原理教材很多,如果从工程化的角度去诠释编译程序的实现过程及其原理,即对一个完整的源程序到目标程序的转换过程进行详细讲解,不失为一个新的途径。我们的配套教材《编译程序的实现原理》的编写形式如下:先给出编译器的输入――一个C语言小程序;再给出编译器的输出――目标机上的目标语言,完成这样的转换需要进行的工作包括词法分析、语法分析等几个功能模块;再针对每个功能模块给出本模块的输入和输出,如词法分析为一个C语言小程序,模块的输出形式为TOKEN链表,完成这样的转换需要进行的工作由理论和实现两部分组成。这种讲述方法实现了五化:
工程化:以对一个完整的源程序到目标程序的转换作为教学载体介绍编译程序的实现及其原理,以反映编译的工程性。
模块化:将一个完整的源程序到目标程序的转换作为总目标,将不同的子转换作为各个子模块的目标,以反映编译的模块性。
链接化:将一个完整的源程序到目标程序的转换所需的知识处理成总目标与子模块、子模块内所需知识点之间的链接,以反映编译的整体性。
需求化:将编译原理内容的平铺直叙转换为实现一个完整的源程序到目标程序的转换的所需知识,解决了编译内容的庞杂、不分主次、叙述冗长的问题。
形式化:将形式语言的内容介绍放置在为完成目标所需知识的位置,突出形式语言的地位、内容及其应用。
1.2.3软件工程能力培养
在工程化实践教学体系中,软件工程能力的培养是至关重要的。
软件工程能力包括软件需求、软件设计、软件构造、软件工程基础结构、软件配置管理、软件维护等知识单元。有些知识单元在早期学习,以促进学习条件的成熟;而有些知识单元的学习需要一定的成熟条件,应该放在后期讲授,如阶梯状迭代工程实践项目是整个教学过程中理论联系实际,培养学生动手能力、观察能力、分析和解决问题能力、团队合作以及创新精神的重要环节。把软件工程知识单元分期、分阶段引入阶梯状不同开发项目的全过程,形成了特色鲜明的工程化实践教育体系,使学生的软件工程能力在实际项目开发中得到锻炼和提升。“编译原理”课程工程化实践项目内容安排如表1所示。
“实践性、个性化、逐步工程化”是工程化人才培养的重要环节,也是学生成为合格软件工程化人才的实践过程。以上教学组织方法既保证了教学的系统性、知识性,又保证了教学案例的先进性和实践性。
1.2.4阶梯状迭代工程实践项目
编译器代码的长度可从10 000行到1 000 000行不等,编写甚至读懂这样一个程序都非易事,更何况是开发,因此编译器的实现比以前任何课程中学生承担的设计要大得多、难得多。纵观国内外大学研究现状,一般都是先设计一个语言,面向过程式或面向对象式,然后对设计的语言进行面向过程或面向对象程序设计方法的开发,早期采用面向过程语言编译器的面向过程开发,如吉林大学计算机科学与技术学院的编译原理实践课程“编译程序的设计与实现”,近期采用面向过程语言编译器的面向对象开发,或是面向对象语言编译器的面向对象开发,如“Modern Compiler Implementation in Java”。无论哪一种,学生都是一次性为具有上百条产生式语法的语言开发编译器,难度极大,这使实践课程的收效甚小。采用阶梯状迭代教学法创建的编译原理课程工程化实践项目从根本上解决了这个问题,配套教材为《编译程序的面向对象程序与实现》。
如图1和图2所示,编译原理课程工程化实践项目内容包括“C0解译程序的面向对象设计与实现”,“C1编译程序的面向对象设计与实现”,“C2编译程序的面向对象设计与实现”,“C3编译程序的面向对象设计与实现”。整体项目的源语言定义为C语言的子集,采用阶梯状迭代教学法后,将源语言定义为C0、C1、C2、C3,Cn是Cn-1的扩展。
编译原理课程工程化实践项目的优点有:
(1) 起点低:降低了开发难度。学生根据自己的实际水平选择源语言级别,有不同收效。从根本上解决了软件开发水平低的学生对编译程序开发望而生畏甚至放弃的问题。
(2) 阶梯上升:项目内容的选择不是零散的、随机的、重叠的,而是相互关联的。纵向为编译理论,是主要内容;横向为软件工程,是辅助内容。主要内容将难点分散,处理成阶梯状;辅助内容也将难点分散,同样处理成阶梯状。
(3) 迭展:每一个项目需求是前一个项目的扩展,因此,每一次的软件开发可以看作是前一次开发的迭代,使学生面对大型软件开发项目中最难处理的用户需求不断变更的问题,最大程度地使用重用技术。所有项目的开发承上启下、循序渐进、阶梯状迭展,为研究和学习软件生产线新技术埋下伏笔。
(4) 知识渗透:将软件工程核心内容及工程化软件开发思想由浅入深逐步渗透到各个项目中,每个项目具有不同级别的培养目标,学生从不同项目循序渐进地掌握工程化软件开发理念,降低了工程化软件开发的难度。
阶梯状迭代工程实践项目发挥了学生的主体意识,给学生足够的空间,激发了学生的活力与创新思维,并培养了学生的“三个能力”(自我管理能力、组织策划能力、社会实践能力)和“五种意识”(责任意识、服务意识、创新意识、团队意识、竞争意识)。
1.2.5配套教材
编译原理课程工程化实践教学配套教材共有3部,前导教材《C++实战:解释程序的面向对象程序与设计》与“编译原理”理论教学知识的先期注入配套;《编译程序的实现原理》与“编译原理”工程化理论教学配套;《编译程序的面向对象程序与实现》与阶梯状迭代工程实践项目配套,3部教材前后关联且各呈完整体系。本套教材为清华大学出版社“编译原理及其实践课程的工程化教学课群研究”立项项目,已出版1部,另2部明年中旬出版。
1.2.6评价体系
编译原理课程的工程化实践教学评价体系包括对学生工程素质和对教学体系的评价。
学生工程素质的评价采用过程化考核管理标准,即把工程化能力和职业素质引入学生工程素质的评价体系,加大工程化实践环节的比重,形成专业理论知识和实践能力并重的考核体制,将期末一张试卷定成绩的考评机制改为由工程化实践项目、随堂测验、论文、面试、考试、团队等多种形式相结合的评价机制,防止实验抄袭现象。编译原理课程考核采取理论知识和工程化实践项目完成情况的综合考核方式,工程化实践项目根据项目设计报告、软件开发文档、源代码和运行系统的质量进行考核,学生成绩以登记评定方式给出。
教学体系的评价采用回馈化考核管理标准,即把企业回馈和毕业生回馈引入教学体系的评价。对企业和毕业生进行跟踪调查,通过收集企业和学生的反馈指导教学和实践项目的设置和修订,形成良性循环,为进一步提高教学质量打下坚实基础。
2结论
软件工程是集计算机科学与技术、数学、经管等多学科的交叉性学科。作为一名软件工程教育者,我们必须建立一套具有自身特色的工程化人才培养体系,培育具有国际竞争力的一流软件产业高级/高端人才,结合软件工程人才的学科交叉性、偏重实用、职业定位等特点,系统深入地研究软件产业对技术型、管理型的人才需求,注重学生综合能力和专业素质的培养,才能在计算机系统、软件工具、软件工程和管理上循序渐进地提高学生的能力。
参考文献:
篇10
计算机类教材的隐忧
1.题材撞车与“自留地”现象
有谁能说出全国一共出了多少种《C程序设计》教材?有谁能说出全国出了多少种《编译原理》教材?还有《数据结构》、《微机原理》、《软件工程》、《离散数学》……几乎所有的计算机专业骨干课程,都可以列出长长的一个书单。而这些教材,几乎都是一个模子里出来的,从目录上看,内容差不多,甚至连写作的语言也让人“眼熟”。
很明显,教材的写作似乎已进入“工业化大生产”阶段,教材成了“教材生产流水线”上的产品。
然而我怀疑,这样的生产流水线能出得了堪称精品的教材?
教材内容雷同的现状,催生了各个院校在教材选用上的“自留地”现象,即选教材时优先选用本校教师写的教材。因为大部分的教材内容大同小异,那为什么不用自己的?作出这个决定省时省力,而且可以说出一连串“合情合理”的原因。
但教材选用上的“自留地”现象,客观上却为推广优秀教材带来了阻碍。
2.面孔严肃,拒人千里
我的一个朋友有句名言:“书非K不能读也!”他的意思是,学习教材的过程是非常痛苦的,要经历一个“死去活来”的过程,才能最终琢磨出味道来。
在我看来,这实在太确切了。
我们太多的教材,老板着个脸,文字乏味枯燥,拒人于千里之外。在这方面,最典型的是理论性本身就很强的教材。比如《离散数学》教材,大多数都充满了大量的抽象的概念与定理,并夹杂着大段大段枯燥的形式化推导与证明,如果有人告诉我这样的书他读得“很享受”,那他不是一个“数学天才”就是在说反话。
我手头有一本北京某著名大学的老师编写的《离散数学教程》,写作风格比较简洁,但太简洁时就增大了阅读的难度,薄薄的几页有时就得耗去读者数个小时。刚好手头还有另一本机械工业出版社引进的《离散数学及应用》(《Discrete Mathematics and Its Applications》,Kenneth H.Rosen著),就显得平易近人多了。论厚度,这本是那位老师写的书的1.5倍左右,但相比之下,我还是宁愿抱着台电脑用“金山词霸”去啃这厚厚的“英文砖头书”。
这位著名学府的老师她本人无疑具有很高的数学水平,而这本教材,我想可能是针对该校基础很好的本科生编写的,对于像我一样数学水平有限的普通读者选它来学习,无疑是个错误。
国内国外同类教材对比,我不由得产生以下疑问:
为什么国内作者在写作时不能多举些例子,不能多一些通俗的解释?为什么国内作者如此惜墨如金,能不能在书中多写几段话,点明这些理论的实践意义?为什么国内的作者不能在教材中对最重要的知识点给出“画龙点睛”式的强调,以帮助读者去把握这一领域的脉络?
我衷心希望国内作者在写教材时多从读者的角度去想想,不要对读者已掌握的知识与技能作太多的假设!
真正有成就的人,比如许多大科学家,都说他们之所以取得一定的成就,都是因为他们对各自的领域有着强烈的兴趣,著名数学家陈省身就说过他是在“玩”数学。能把如此抽象的学科看成玩具,难怪陈先生能成为一代数学大家!
那对科学的兴趣从何而来?
现在的家长和教师,从小学到大学,无不为孩子沉迷于网络游戏而发愁。为什么这么多的学生会喜欢上网络游戏?很简单,因为网络游戏有趣,好玩,让他们有成就感,可以让他们逃避令他们感到痛苦的学校学习生涯。
为什么学生认为学习是件苦差事?他们天天要啃的教材是这样一副冷冰冰的模样,有哪个学生会喜欢?这是非常自然的事情。
当然,无论怎样编写,教材是无法做到像游戏一样引人入胜的,但教材的编写者完全应该想办法让学生的学习多一点乐趣,少一点痛苦!
当前大多数教材读起来毫无乐趣可言,这点无庸多说,每个过来人都有体会。
3.在写教材还是在写论文
教材的写作风格与论文有很大不同,然而,真有一些教材是以“论文笔法”来写的。
论文有特定的写作方法,高水平的论文可能会用高深的数学语言来表述,比如爱因斯坦最初的有关狭义相对论的论文,据说当时全世界科学家中能看懂的没几个,不为大众所理解,并不影响论文本身的水平。
然而把这种“论文笔法”用到教材上,那就走入了误区。教材的主要目的是传播知识,而不是向世界宣告您又发现了什么新理论。如何让读者能更快地汲取书中的营养,这是教材编写者必须考虑的问题。
除此之外,还有更严重的问题。
当今中国高校非常强调论文的发表数量,太多的人为发论文而忙碌。为了,出现了一种很不好的论文写作风格,笔者称之为“浅入深出”。作者自己并未作太多的研究,也没有多少真正的成果,为了论文更易于发表,必须人为地加大论文的阅读难度,比如某个问题其实可以用几句大白话就讲清楚的,却一定要绕个大弯子,加上N多数学公式……别人看不懂,呵呵,那是你水平不够!大批这样的论文中不乏“南郭先生”。
由于教材也是晋升高一级职称审批的指标之一,就有人为此目的而拼凑教材,自然而然地将拼凑论文的套路用到了教材编写上,习惯成自然嘛。对这种“新鲜出炉”的教材,只能用一个词来形容――“误人子弟”!
4.从理论到理论的“空对空导弹”
计算机科学本质上是一门实践性非常强的科学,正是实践在推动计算机科学与技术的不断进步,许多的计算机理论都可以找到它的实践基础。
拿《编译原理》来说,其中介绍到的许多理论与方法在软件开发中应用是很广的:复杂的软件如一个编译器,简单的程序如一个计算器;大规模的软件如现代软件集成开发环境,小的软件如某个MIS系统中四则运算公式的解析模块,都可看到编译理论的巨大威力。
然而,太多的编译教材只重理论不重应用,讲了一大堆的文法和自动机理论,嗦嗦地详细介绍各种分析方法,却都是“纸上谈兵”,从理论到理论,难怪有这么多的学生困惑不已:我为什么要花这么多的时间去学这么难的课程?它有什么用?难道仅为了考试?
知识的获取与掌握是有其客观规律的,一般而言,具体的知识易于理解,而抽象的知识则难于把握,在学习过程中,应遵循“具体抽象具体……”这样一个无限循环的过程。
如果某人对一门学科所知不多,却指望他能通过理论学习迅速地把握这门学科,这违反了人类认识世界的客观规律。
因此,从认识论角度出发,教材的编写是不能从理论到理论的。必须先从实例引入,再介绍理论。教材应尽可能地展现出人类在探索某个问题时所经历的具体过程,理清其来龙去脉,阐明知识之间的内在联系,从而帮助学生在学习过程中循序渐进地建立起一个相对完整的知识体系。
改进之路
那么,应该如何写出一本好的教材呢?
1.作者要有责任心
教材的作者,绝大部分都是教师。要牢记教师的职责:传道、授业、解惑。我们身上是有责任的,误人子弟,则罪莫大焉!
这就要求作者厚积薄发,尽可能不要出于功利性目的(比如升职称)而写教材。当然,现实中功利性因素是不可避免的,只能要求作者既然要决定写,就要尽可能地写好。
我强烈反对没有任何实际开发经验与教学经验的人来写计算机类教材。孙子有语:不知彼不知已,每战必败。这样的人既对计算机技术不熟,又不了解学生的真实情况,怎可能写出好教材?
另一个对作者的要求是与时俱进。计算机理论与技术的发展太快了,因此一本好教材应及时补充新内容。在这点上,国外的许多经典教材做得很好。比如我前面提到过的《离散数学及应用》,我手头上的已是第5版。还有一个例子,比如著名的Deitel父子写的《Java How To Program》(《Java大学教程》),几乎做到了Java每出一个新版本,相应地他们也会跟着更新书中的内容,出一个新版。
第三个对作者的要求是能与读者互动。在互联网大普及的时代,网络是获取读者反馈信息最便捷的手段。国外的著名教材,几乎每本都有一个网站提供各种的附加资源,并给读者答疑解惑。对于国内的作者而言,要求每本教材都建立一个独立的网站是不切实际的,但最起码作者应该留一个电子邮件地址。目前Blog非常红火,许多博客网站都提供免费的Blog服务,笔者认为这是一个很好的作者与读者互动的平台。
2.弄清楚教材是给谁看的
教材与理论专著不同,教材是学生学习的依据,其目的是更快更好地将知识传授给学生,因此,应从学生角度而非教师角度编写教材,要让学生“便于学”,而不是教师“便于教”(当然最好两者兼顾,不能兼顾则学生优先)。
我看到许多的教材都是“教师编给教师看的”,而不是“教师编给学生看的”,这种教材如果没有老师教,学生几乎无法自学。
比如看到某教材有“教师手册”与“学生课本”之分,或者有“正式课本”与“辅导材料”之分时,我觉得这是一种“一切以教师为中心”的教学思想的反映。其本质在于教师要比学生垄断更多的资料,以便树立教师的“权威”,而学生只能在教师的讲授与指导下学习。有这个必要吗?这种方式,我怎么看都有点“武大郎开店”的嫌疑。
在现在这个信息爆炸的时代,重要的是培养学生的自学能力,怎能让学生离了教师就不会学习了?
另外,按“便于学生自学”的方式编写教材,其实反过来也有助于教师(特别是新教师)深入理解教材,从而把教学工作做得更好,真正做到“教学相长”。
3.深入浅出才是好教材
一本适合于学生自学的教材,一定要做到深入浅出。这是很不容易的。其前提是作者要有深厚的积累,才能“用普通话讲抽象的理论,用大白话讲复杂的技术”。我个人发觉,如果做到八个字,教材的可读性就可大大增强。这八个字是:善用比喻,实例为王!
一个好例子,胜过千言万语。例子在帮助学生掌握知识方面的作用是无法估量的,尤其是针对理论性强的课程。
举个例子,《数据库原理》往往要讲到数据库范式,理论讲得太多,不如举一个学生都非常熟悉的网上选课系统,详细分析将学生信息与课程信息分布到数据库表中的不同方案,比较每个方案的优缺点,进而自然地引出范式的概念,并让学生能直观地理解如何在数据库中应用范式去解决数据完整性、冗余性等在实践中遇到的问题。
另一个方面,计算机科学理论与技术中都涉及到大量抽象的概念,教材在向学生介绍概念的内涵时,既要注重科学性与严谨性,更要注重通俗性。
在这方面,比喻这一修辞手法大有用武之地。
比如,介绍C++课程中的名字空间(namespace)概念时,将“类”比做书,将“名字空间”比作图书馆或书架,则学生很快就能明白这一抽象概念的含义。
还有《数据结构》中的堆栈,可以将其比喻成羽毛球筒,其特点是每次只能从开口处塞入和取出一个羽毛球。
《软件工程》中介绍软件项目的迭代开发原则时,可以用“滚雪球”来类比软件项目的进化过程。
其实汉语有着丰富的表现力,看看过去和现在各个文学家的著作,难道我们的教材编写者不能从这些地方汲取营养,把教材写得尽可能地“好看些”?
4.授人与鱼,不如授人与渔
“授人与鱼,不如授人与渔。”
传颂千古的名言,蕴含着深刻的道理。
计算机科学的每个领域,其实都有一些最重要最基本的思维方法。在教材中,应致力于将这些非常重要的思维方法以直观的形式突显出来,引导学生先去认识这种思维方法,再让他们去尝试应用这种思维方法,最终能活用这种思维方法。
因此,好的教材,应该让学生能领会不同领域具有不同特点的思维方法,而不是仅仅只关注一些具体知识的传授。
比如,学数学就要让学生知道怎样从特殊到普遍,从已知推未知,知道怎样从假想开始再以科学的推理方法去证明假想的对错,掌握从大量的数据中去找出其中蕴含着的特定的数学规律的方法……
学编程就要让学生知道针对某个问题,应怎样去设计一个解决方案;在具体开发中,面对着技术难点,用什么方法去攻克它;理解为什么在编码过程中,要高度注意编码的规范性;知道如何将软件工程的相关理论渗透到具体开发实践中……
只有具有这样特点的教材,才能使学生掌握做事的方法,并使他们的思想深刻起来,成为一个有着独立思维能力的人。
我想,作者如能作到以上几点,写出的教材其质量应是不差的。
写出特色来――我的教材编写实践
作为一名高校的一线教师,我既热爱教学工作,又喜欢钻研软件技术。
在工作中,我一直都在琢磨着有关计算机教育方面的一些问题。本文前面的一些观点就是我在教学实践中逐渐总结的。
但这些观点是否正确,是否可行,这只能由实践来说话。我决定编写一本教材,全面地尝试我在上面所提到的各种观点。
从2004年11月到2005年7月,我用了9个月的时间写了一本不像教材的教材:《编程的奥秘――.NET软件技术学习与实践》,这本教材与传统教材的模样有很大的不同。
这本书的基本原型是我在北京理工大学开设的“.NET软件开发技术基础”选修课教案,该课程得到了微软公司2005年“微软高校精品课程支持计划”的资助,教材于2006年1月由电子工业出版社出版。
在写作过程中,我想得最多的就是如何走出一条教材编写的新路子,探索一些新的教材编写方法,一句话――写出自己的特色来!
书出版以后,我在自己的Blog上(/bitfan)建立了一个读者作者交流区,自己的邮箱也陆陆续续地收到不少读者邮件。
篇11
0 引言
作为计算机科学与技术专业的一门重要专业基础课程,操作系统的地位举足轻重。但在高校本科教学过程中,学生普遍反映该课程难学,教师在教学中也困难重重。究其原因,操作系统课程自身的知识结构以及研究对象特有的复杂性使上述情况成为必然。而知识体系的复杂性直接导致该课程给人理论性强、抽象的印象。因此,如何有效开展操作系统课程的实验教学,加深学生对该课程的直观理解和把握就显得至关重要。传统实验方法以验证和仿真为主,实验很难发挥应有的作用,且容易混淆系统级和应用级的许多概念,反而使学生更难把握知识结构,难以对系统软件形成宏观认识。结合多年教学实践,我校在操作系统课程的本科教学过程中结合实验平台软件的开发和应用,探索出一种直观有效的实验教学模式,使得教学效果得到较显著的提高。
1 操作系统实验教学现状
1.1 实验比重
由于操作系统课程涉及的理论知识多杂志铺,系统级的验证和实验难度较大,导致教学过程中容易出现避重就轻的情况,教师易偏重理论课而轻视实验课教学,实验的课时设置在各高校中也不同程度地偏少。另一方面,学生受考试形式的引导,也偏重理论学习而忽视实践动手能力的培养。实践证明,不注重实验、验证环节,学生很难对该课程涉及的大量概念和方法形成直观认识,导致对许多知识点的认识出现偏差,反而不利于理论课的学习。例如,目前选用的教材在行文时经常变换研究的“角度”,一些知识点是面向应用的,而一些是研究操作系统内部实现的,但在讲述中并未明确说明,比如:在“进程同步与互斥”部分,大部分教材是从“应用”的角度来描述P、V操作的,并附带伪码算法。但在学习过程中,许多同学搞不清这些算法用在何处,是在应用程序层次还是在操作系统实现层次。如果结合Linux或Windows平台设计实验内容,补充P、V操作对应的系统调用和有关函数的用法,真正写出可运行的程序,就可以大大加深对知识点的理解。
1.2 实验方式
与大部分应用类课程相比,操作系统课程的研究目标是系统软件,知识结构偏重底层软件,且往往涉及到硬件知识,开展实验所需的软硬件平台复杂,传统教学模式很难真正实施“系统级”的实验项目,故常用模拟算法代替。这样容易导致所学知识和方法比较抽象和“遥不可及”,很难形成对操作系统整体上的理解和把握。
1.3 现有的一些改革和尝试
针对操作系统课程实验教学中的问题杂志铺,各高校进行了许多有益的改革和尝试。例如,使用逐渐被认同的Linux实验平台[1],整理更加规范的实验内容[2],以及按照归类和划分层次的原则对实验目标进行细化等方法[3]。但操作系统实验内容自身的复杂性与实验方式尽量简单、有效的要求之间的矛盾依然存在。
2 基于内核分析的实验模式
针对上述问题,本校操作系统教研组在操作系统实验教学中不断探索和尝试,总结出一种基于内核分析的实验教学方法。实施过程中,在保障36个实验学时的前提下,直接面向具体的操作系统对所学的概念和算法进行验证、设计,配合跨平台编译和调试技术,有效地降低了实验实施的难度,且不增加学生的额外负担。
2.1 内核分析
内核分析,就是选择一个开源的操作系统作为对象,通过阅读源代码来分析其实现原理和必要细节,并在特定的地方修改部分代码以验证自己的算法。但是,为了降低实验的复杂度并适应本科生的知识结构,实验对象不应太复杂。基于上述考虑,可以选择Linux0.11版本作为实验的目标系统。Linux0.11版是Linux的早期版本,其总的代码量只有1万行左右,且结构清晰,功能较完整(能够覆盖实验教学中的知识点),几乎包含了目前较新版本内核的所有基本功能和原理[4],能够较好的满足实验要求。
2.2 跨平台编译和调试
单纯的代码阅读是枯燥无味的,特别是操作系统这种系统软件。为了提高实验的直观性,可借助动态调试技术来实现内核代码的阅读和分析工作。通过调试过程可以较轻松的跟踪内核执行的流程、关键算法的运行效果以及关键变量和寄存器的取值情况。
但由于操作系统是系统软件,其修改、编译和调试过程远比一般的应用程序复杂。目前常见的实验环境是在微机上直接安装Linux的发行版本或在Windows系统中通过虚拟机安装Linux开展实验。但这些方法都需要在修改内核后重新编译并重启系统,其过程繁琐且需要掌握Linux的大量命令,从而加重了学生的负担并容易导致其失去学习兴趣。
得益于自由软件基金组织GNU对Linux的支持,目前有许多Linux相关的工具软件可以使用,并且有对应的Windows版本。其中杂志铺,著名的编译器GCC和调试工具GDB可以巧妙解决实验过程繁琐的问题。其主要思路是:利于GCC、GDB、MAKE工具和虚拟机软件,实现一种跨平台的内核编译和调试方法,即在Windows平台下编辑、编译并调试运行Linux系统。这和用VC、VB等应用程序开发工具编程调试的工作方式几乎没用区别。另外,通过开发一个集成实验环境(Windows下的应用程序),可将GCC、GDB、MAKE及虚拟机工具进行集成,从而将命令行工作方式转换为视窗工作方式,大大简化实验步骤,使学生更容易集中注意力到实验内容本身。
图1描述了这种基于跨平台编译调试技术的工作流程。
图1 跨平台内核编译、调试流程
3 集成实验环境的搭建
搭建集成实验环境的目的是避免实验时频繁的执行GNU工具集对应的各种命令,使实验步骤尽可能简洁。其主要组成为:虚拟机BOCHS、Windows下的GNU工具集以及主控程序。集成实验环境的开发过程本身涉及许多操作系统课程中的知识点,比如进程间通讯、管道、共享存储器等。对学有余力的学生,阅读其实现代码有助于编程能力和对操作系统整体认识的提高。
3.1 虚拟机BOCHS
传统的Linux内核调试方法是使用KGDB进行远程调试。这种方法必须要求有一台目标机和一台调试机,因此用于实验有很多困难,难以实施。而利用虚拟机软件,可以在一台微机上虚拟另一微机并满足实验的要求。另外,选择BOCHS而非其它软件的主要原因在于它使用的是仿真技术而非虚拟技术,从而更适合充当调试服务器的角色。
3.2 Windows下的GNU工具集
为了实现跨平台的内核编译和调试,实验环境需要使用Windows下的GNU最小工具集(Minimalist GNU for Windows),主要包括的工具有:AS、LD、GCC、MAKE以及GDB。其主要作用是保证在Windows平台下GNU开发环境仍然可用。但需要注意的是,基于该工具集生成的可执行程序是PE格式的,即Windows下的可执行程序格式,不能作为内核镜像执行,因此需要一个简单的转换过程。但这种首先将内核编译为exe再转换为内核镜像的过程恰好可以为GDB保留内核符号表,从而使跨平台调试成为可能。
3.3 集成实验环境
这是一个用VC开发的Windows应用程序,其功能包括内核源码的管理、编辑、编译、内核镜像的生成、调试、MINIX根文件系统的维护以及实验项目的管理。
(1)内核源码以及实验项目的管理
该功能主要结合操作系统实验教学中的系统引导、进程管理、存储管理、设备管理、文件系统等内容,针对相应的内核源码给出注释、快速索引、实验指导以及实验步骤。它可以帮助学生通过真正的内核代码分析,更深刻理解相关知识点,且形式直观、易于理解。
(2)内核镜像的生成、调试
该功能是实验环境的核心部分。基于该功能可以快速对修改过的内核生成新的镜像,并通过调试器看到真正的运行情况,从而使内核分析实时、动态进行杂志铺,并且像调试应用程序一样简单。具体实现时,将GCC、GDB、BOCHS等作为子进程执行,并通过管道和I/O重定向等方法将繁琐的控制台工作方式转变为视窗工作方式。例如,进行调试时,不再需要记忆GDB的调试命令和频繁的控制台输入,只需点击鼠标设置断点、单击菜单项或按快捷键即可实现字符环境下几十条命令才能实现的功能,操作简单、界面更友好。
(3)根文件系统的维护
在Windows下维护根文件系统的目的是便于将可执行程序加载到磁盘镜像中。由于Linux0.11功能简单,并且为了保证磁盘镜像尽可能小,Linux0.11本身不包含GCC等编译工具,因此,要在目标系统中运行的程序必须在Windows系统中编辑、编译,最后再加载到根文件系统中。
图2为集成实验环境运行的情况。
图2 集成实验环境
4 结语
操作系统课程实验教学的必要性和重要性已被广泛认同,而对教学方法、手段的探索和改革还任重道远。这种基于内核分析的实验方法试图让学生真正接触操作系统实现细节的同时,力争简化实验步骤,使实验环节易于实施。实践证明,该教学模式容易被学生接受、取得了较好的教学效果。
参考文献
[1]钟少丹.“操作系统”课程实验设计的思考[J]. 计算机教育,2008(12):120-121.
[2]张其亮,韩斌.操作系统课程实验教学改革探析[J]. 计算机教育,2010(7):91-93.
[3]邹恒明.操作系统课程实验中的五重奏哲学[J]. 计算机教育,2009(20):109-112.
篇12
1.多媒体授课。移动通信课程的内容覆盖面广,如果单纯采用传统的板书方式来讲授,不仅耗费时间,影响教学效率,对于一些系统流程的展示,也不够生动形象。为解决课时少内容多的矛盾,本人采用信息量大且形象直观的多媒体课件进行辅助教学。对于一些重要的公式、推导采用板书的方式,对于原理方框图、小区规划、网络结构等使用多媒体进行教学。本人还搜集整理了大量基站、天线、网络区群结构等相关图文信息,通过动态演示与分析,将整个通信领域所涉及的整体设备和完整系统进行展示,使学生可以全面了解整个通信领域的各个环节,建立全网的概念,开阔了学生的思路,提高了学生的学习兴趣[3]。2.讨论学习法。传统的教学方式不重视与学生的互动,即教师满堂讲,学生只负责听课,这样很难激发学生的学习兴趣,锻炼思考能力。为了使学生积极的参与教学,可采取讨论的形式,以学生为主、教师为辅的课堂教学方法。由教师根据教学内容选定一个讨论课题,将学生分组,各小组内成员进行讨论,在由小组内选派一个代表进行组间讨论,各组内成员可对代表的阐述进行补充,由教师根据学生的积极状态,讨论结果给予一定的平时成绩。在此过程中,以学生为主体,教师只是起到导向的作用,指导学生讲解和组织讨论,学生通过讨论,对一些问题理解的会更加透彻,这种方法不仅调动了学生的主观能动性,还充分发挥了学生的想象空间[4]。3.提交论文。为了培养学生研究问题的能力,教学过程中指导学生对感兴趣的内容撰写论文。论文题目可由教师制定,也可以由学生根据自己的兴趣自主选择。要求学生在一定时间内查找资料,提交论文,并以随机抽查的方式,让学生进行讲解,并对论文进行评判。评判方式可采取抽取若干学生的论文,组织大家进行讨论,或者教师选择若干论文为学生进行讲解,这样可以提高学生撰写科学论文的兴趣和水平。
三、考核方式
传统的考核方式是以期末考试作为学生的最终成绩,这种方法难以对一个学生所学知识和综合能力进行客观的评价。为了对学生的评价更加综合和准确,除了取决于客观的考试或作业成绩外,还由主观的师生互动关系与课堂参与程度所决定。具体由以下几个方面进行评定:(1)期末考试,考查对基本知识及前沿技术的掌握程度;(2)课堂讨论,将课堂参与列为期末成绩考量的标准,可以鼓励学生积极思考,带动课堂气氛;(3)撰写论文,考查学生研究问题及创新运用的能力;(4)作业成绩。
四、教学实践
移动通信是实践性很强的一门课程,如果只立足于理论教学,满足不了现阶段人才培养的需要,而一般的实验设备只能做验证性实验,学生对实际运营情况无法真正了解,因此我系在外出实践环节中组织学生到联通公司、农垦总局通信公司等单位进行观摩学习,在实习过程中学生可以接触到主流商用通信设备和技术。在现场了解基站、移动交换中心等设备的运行情况,与技术人员进行交流、沟通,把课本上的理论知识与实际设备、技术相联系,从而更好地理解移动通信课程涉及的技术和系统,为今后的学习和工作打下了坚实的基础。
篇13
0 引言
《操作系统》作为计算机及相关专业必修课程,将学生在一、二年级学到的知识和技能进行综合并予以提升,帮助学生完善专业基础理论体系,培养学生对计算机软硬件系统结构进行系统、完整、深入的思考。该课程在教育部历次教学改革和教学计划调整中都不断得到加强。
任何一门课程,要对其有比较深刻的内涵理解的前提是对其内容的精确提炼,而不仅仅是简单的以章节形式进行的罗列和叠加。笔者在多年从事该课程研究的基础上,对操作系统的一些教学方法方面有一些比较成熟的看法,特提出以供大家商榷。
1 操作系统课程的精髓教学框架
对本课程的全部教学内容所提炼并加以有机整合而形成的精髓教学框架:
1.1 系统发展历史的回顾与当前技术发展潮流追踪许多学校的计算机专业在讲解操作系统课程时,往往局限于介绍具体方法和技术细节,忽略对技术发展历史和当前技术潮流的诠释。既不能开拓学生专业视野,又无法对专业历史有深入的了解。本门课程争取使用3-4学时的时间详细讲解操作系统的发展历史、著名人物、分类体系和技术发展趋势。这样的内容极大的激发了学生的学习兴趣和专业使命感,具有很好的教学效果。
1.2 作系统基本设计原理与核心技术方法的分析讲解 本门课程注重对基础专业理论的讲解,从五个方面详细剖析操作系统的核心原理。对进程管理、存储管理、文件系统、设备管理、系统接口等基本的设计原理均进行了详细的介绍和分析。
操作系统的各种基本设计原理中包含了大量的算法设计与技术实现优化考虑,在教学过程中,要特别注重剖析算法设计思想和优化方法的差别,强调激发学生的主动思考能力,而不是僵化的向学生灌输思想。
1.3 真实操作系统案例的组成结构与实现特色剖析对比 操作系统的设计原理体系严密,各种技术方法错综复杂。要注重选用真实操作系统作为学习的案例。通过对真实案例的剖析以提高学生的感性认识。
1.4 操作系统原理与计算机原理、编译原理、数据库、计算机网络等课程的关联 《操作系统原理》课程是计算机及相关专业的学生在本科阶段“承上启下”的重要课程,讲授过程中必须注重与其他专业基础课内容和知识的结合。要专门讲解“操作系统硬件基础知识”以融合《计算机原理》课程知识;重点分析“应用程序编译链接过程”以融合《编译原理》课程知识;在“进程同步互斥、I/O设备同步阻塞-异步传输”的内容中有机融合《数据库原理》、《计算机网络》的基本概念。这样的关联式教学方式使得学生能够将多门专业基础课程进行有机的融合贯通,有效的促进了专业理论体系的完善。
2 选择科学合理的教学方式
基于以上对教学内容的有机的系列化分类,在选用优秀计算机经典教材的基础上,必须强调教学方式的科学与合理,主要采用以下教学方式:
2.1 定位于专业基础必修课,帮助学生建立扎实的专业理论基础 计算机领域各相关专业的学生都需要建立扎实完整的软件基础理论体系。《操作系统原理》是讲述计算机硬件资源管理、应用程序运行控制、人机交互接口实现等内容的基础性课程,在专业人才培养方面具有极为重要的作用。应该不断加强对《操作系统原理》课程的教学投入,积极完善师资队伍、改进教学计划、建立完整实践环境、主动追踪技术发展潮流,使得本门课程的教学质量不断提升。
2.2 面向应用、软件等各专业学生授课,实现“承上启下”的总体教学目标 《操作系统原理》是计算机科学与技术专业必修基础课,是自动化专业的专业选修课,也是非计算机专业的软件方向主干课。在教学计划中,本门课程最主要的作用就是实现对低年级专业基础知识的综合与提升,帮助学生建立系统、完整的专业基础理论体系,培养学生的研究型思维和动手实践能力,开拓学生的专业学术视野,为后续课程的学习和专业发展奠定重要的基础。
2.3 原理、实践、现实应用相结合,为培养高水平专业人才服务 《操作系统原理》是综合了基础理论讲授、动手实践、观察体验、最新技术发展潮流追踪等多项内容的专业基础课程。课程建设存在教学工作量大、上机实践环节重要、学生学习任务重等特点,课程教学过程中,常常存在原理讲授与上机实践脱节、课堂学习与现实应用剥离的情况,导致老师在教学过程中常采用“灌输式”教学方法、学生在学习过程中常采用“机械记忆”的学习习惯,教学质量难以提升。
为此,在《操作系统原理》课程建设中应该积极进行教学改革和创新,近年来不断引进国内外经典操作系统教材,努力搭建多种操作系统平台的上机实践环境,加强师资队伍建设和教学督导力度,加强对技术发展潮流的追踪。
2.4 “启发式、关联式”的课堂讲授与课堂讨论相结合在对基础性的操作系统原理进行讲解时,要注重讲授与讨论的结合,教案的内容组织并不完全遵循各类教材的内容安排,在讲解顺序、思路整理方面均体现了教师对学习过程的把握和指导。在详细讲解各类原理之前,安排小规模“课堂讨论”分析猜测设计思想,激发学生的好奇心和主动思考能力;在讲解原理的过程中,不断的问“为什么”,提高学生的对比分析能力;在原理讲解完成后,进行系统性的总结和展望,指导学生建立系统性的思维方式。