安徽师范大学《编译原理实践》课程教学大纲(共11篇)
安徽师范大学《编译原理实践》课程教学大纲 篇1
《编译原理实践》课程教学大纲
课程编号:07114180 适用专业:计算机科学与技术系计算机应用专业(软件本科)
学时数:34(理论学时数:10 实验或讨论学时数:48)学分数:2 执笔者:周有顺 编写日期:2004年2月 执行时间:2003年以后入学的年级
一、课程的性质和目的
编译原理实践设计是计算机科学与技术专业学生的专业必修课。
系统软件是计算机系统的重要组成部分。本课程是在学习系统软件的组成、设计原理和实现方法的基础之上,设计并上机实现部分系统软件----编译程序。目的在于完成相关课程从理论到实践的推进,使学生真正掌握计算机信息处理的实质,提高其专业素质及驾驭各种系统软件和应用软件的能力。
二、课程教学内容
编译程序设计与实现的目的:
了解编译程序的组成及各部分的基本任务; 掌握编译程序各部分的设计原理和实现方法; 体会理论内容与具体实践之间的关系。
第一章 课堂教学内容要点
(1)编译过程概要:(4学时)
词法分析、语法分析、语义分析及中间代码生成、目标代码生成等各部分的具体实现算法;符号表管理、错误信息处理的具体实现方法;上述各部分之间的数据及信息的传递与交流。
(2)编译程序实现途径(6学时)
编译程序的书写语言与T型图;编译程序的自展技术;编译程序的构造工具。
第二章 实践内容概要(上机部分)(24学时)
(1)实验型语言源文法(略)。(2)编译程序的设计目标
①设计该语言的词法分析程序和语法分析及语义分析程序,词法分析程序和语法分析程序分别作为一遍编写,并生成二元式和中间代码四元式形式。
②在语法分析中,对各语句和布尔表达式的分析采用递归下降分析,对算数表达式的分析采用算符优先分析。
③程序中应包括符号表管理和简单的出错处理。词法分析出错处理包括非法字符和非法单词;语法分析出错处理包括简单的语法错误,即程序结构不符合语法规则的错误。
④将中间代码四元式生成8086/8088汇编语言的目标代码形式。(选做)(3)程序调试
用上述语言编写程序,求函数的值。(4)文档要求
①画出该语言文法的语法图。
②写出编译程序中所使用的主要数据结构(二元式表,四元式表和符号表)。③给出该语言的编译程序的各模块的结构图。
④调试上述程序,并分别给出无错误信息和有错误信息的调试结果,即二元式表和四元式表。
三、课程教学的基本要求
本课程是编译原理的后续课程,完成课程的实践部分。因此教学上应着重强调理论与实践的关系,理论内容如何付诸实践,如何利用理论知识去解决实际问题等,以达到学生实践能力的提高。
Project for Compiler System
四、本课程与其它课程的联系与分工
先修课程:汇编语言,操作系统,编译原理等
五、建议教材与教学参考书
[1]
蒋立源,《编译原理》,西北工业大学出版社,1997 [2]
吕映芝等,《编译原理》,清华大学出版社,1998 [3] 陈火旺等,《编译原理》,国防工业出版社,1997
安徽师范大学《编译原理实践》课程教学大纲 篇2
“编译原理”是计算机科学及相关专业的一门核心专业基础课程, 由于涉及形式语言、有穷自动机等抽象内容, 学生在学习过程中存在较大的困难, 被戏称为“天书”。该课程主要介绍了高级程序设计语言编译系统的构造原理、设计方法以及主要实现技术, 综合了离散数学、数据结构、算法设计与分析、形式语言与自动机、程序设计原理、程序设计语言等知识, 具有概念多、理论性强等特点。学生通过系统地学习这门课程, 不仅能够了解编译系统内部的工作原理, 加深对程序设计语言的真正理解, 而且还能有助于提高学生的计算机思维能力、实践动手能力和综合运用专业知识的能力。
一、编译原理课程教学存在的问题
长期以来, 由于编译原理课程具有较强的理论性和实践性, 学生在学习过程中感到很吃力。究其原因, 总结起来主要有以下两个方面的问题。
1. 课程本身理论性太强
该课程内容丰富、抽象, 且具有严密的逻辑性, 它除了具有自身的一套理论体系, 还涉及到大量的其他课程的理论知识, 如形式语言与自动机理论、离散数学、算法等。对于本科生而言, 要学好这些理论本身就有一定的难度。
2. 实践性环节比较薄弱
编译程序是大型复杂的软件系统, 其实现涉及到若干课程, 综合性、连贯性均很强, 学生实验难度很大, 因此, 很多教师对实验重视不够, 实验内容安排也比较随意, 导致实验效果较差, 影响学生动手能力的提高。
笔者长期承担“编译原理”课程的教学工作, 结合多年的编译原理教学实践, 针对以上问题, 从以下几个方面入手进行了教学改革和创新, 积累了一定的经验, 取得了良好的教学效果。
二、明确课程与计算机专业人才培养目标的关系
目前, 按照我国高校的教育现状, 其人才培养目标大致可以分为学术型人才培养和工程型人才培养。学术型人才在取得本科学位以后, 可能会继续学业到硕士或博士阶段, 将来的主要职业以从事学术研究为主;而工程型人才本科毕业后, 主要职业是在工业界发展, 从事与计算机有关的开发和应用方面的工作。工程型人才的社会需求量远大于学术型人才, 但是学术型人才培养对提高国家的学术竞争力至关重要。虽然本科培养方案中尚没有进行区分, 但未来走向决定了不同类型的人才在本科阶段的基础应有区别。因此, 编译原理课程定位有必要参照这两类人才培养要求来确定[1]。对于学术型人才的培养设计一个主要以强调理论性的课程内容, 而对于应用型人才的培养则侧重于编译器的设计和实现, 提高学习编程语言及在程序开发中应用编程语言的能力。培养目标的不同, 将直接影响到授课教师对课程内容进行的剪裁。
三、优化课程的理论教学环节, 提高教学质量
1. 精选教学内容
笔者认为, 教学内容和习题应包括一些从实际碰到的问题中抽象出来的例题和习题, 鼓励学生用所学的知识去分析和解决实际问题。紧紧围绕编译的具体过程这样一条主线, 建议的主要教学内容如下。
(1) 词法分析
首先应明确词法分析的任务, 然后重点讲解词法分析器的设计过程, 如预处理、单词符号的超前搜索、状态转换图以及状态转换图的实现;接着介绍正则表达式与自动机的相关理论, 最后讲解词法分析器自动生成器工具的原理及使用方法。
(2) 语法分析
首先应介绍语法分析的必备知识上下文无关文法, 然后将语法分析分成两个大类予以介绍:自上而下的语法分析和自下而上的语法分析。自上而下的语法分析包括LL (1) 文法和递归下降分析法, 由于它们比较直观, 便于学生接受, 应首先介绍。其次, 介绍自下而上的语法分析, 它主要包括算符优先分析法和LR分析法, 由于目前的编译器的语法分析已不再使用算符优先分析法, 因此, 可以只介绍LR分析法。最后, 介绍语法分析器自动生成器工具的原理及使用方法[2]。
(3) 语义分析及中间代码生成
首先介绍语义分析的基础知识:属性文法和语法制导翻译。然后把语义分析的重点放在类型检查上。类型系统在编程语言的设计中占据重要位置, 可以先介绍一下类型系统在编程语言中的作用, 然后用语义动作来表达类型检查算法。对于中间代码的生成, 则主要介绍各种形式的中间语言, 把赋值语句和各种控制流语句翻译成中间代码的语义动作。对于类型和变量声明语句, 则主要关注怎样按语言的作用域规则组织符号表[2]。
(4) 运行时存储空间的组织和管理
对于这部分内容, 应主要介绍局部存储分配策略 (即一个活动记录中各类数据的组织) , 静态分配、栈式分配和堆式分配等三种全局存储分配策略, 非局部名字的访问方式和各种参数传递方式的实现。
(5) 优化
优化可在编译的各个阶段进行, 但最主要的一类优化是在目标代码生成以前, 对语法分析后的中间代码进行的, 这类优化不依赖于具体计算机。这部分内容建议重点介绍基于块内的局部优化。
(6) 目标代码生成
编译模型的最后一个阶段是目标代码生成, 它通常以语义分析后或优化后的中间代码为输入, 以产生等价目标程序为输出。应重点介绍一种采用简单的寄存器分配策略的代码生成算法, 让学生对代码生成有所了解。
2. 改进教学模式
对于编译原理这种理论性和抽象性都很强的课程来讲, 采用一种恰当的教学模式显得尤为重要。由于案例式教学具有实践性和形象性的特点, 刚好弥补编译课程教学难的问题, 因此, 它可以充分调动学生兴趣, 使其在分析案例、得出结论的过程中掌握理论知识。在教学过程中, 案例的主要形式是例题, 一般是具有代表性的例题或综合习题, 约占2/3的课堂时间。在课堂教学中, 合理结合黑板、粉笔和先进的多媒体教学技术, 建议相关算法理论采用幻灯片形式, 加大知识点的容量;而相应实例的讲授则建议采用板书形式, 可适当降低教学速度, 使学生有充裕的时间思考和掌握。比如, 在讲解正则式转化成等价的NFA这部分内容时, 首先把具体转换的方法以幻灯片形式快速地播放给学生看, 同时配上教师的简单讲解, 然后选取一个具体的例子详细分析, 让学生理解例子, 最后教师对例子进行小结, 归纳出一般性规律, 并让学生与前面的理论对比, 这样回过头读这些理论知识便会轻松很多、容易很多, 从而更加有助于其巩固对理论的理解。又如, 在介绍自动机、正则文法、正则表达式之间的相互转换以后, 还可以通过一道综合例题将这些知识融会贯通, 这样教学效果会更好[3,4]。为了巩固教学效果, 每次课后教师都应该有针对性地布置作业, 学生自己变为实例教学模型的主体, 教师再就作业中出现的问题安排习题课, 这样教学效果会更佳。
四、强化课程的实践教学环节, 提高学生的动手能力
实践活动是创新意识的源泉, 是创新能力的基础, 学生只有不断的在实验环节中尝试、探索、研究和创新, 才能不断提高解决工程问题的能力。“编译原理”课程对实践性要求较高, 学生在实验中掌握一些重要算法, 将数据结构、高级语言等内容融会贯通, 最终提高知识的综合应用能力。
1. 设计实验内容
首先, 要将编译理论和方法在实验中得以概括, 使学生不仅掌握它们本身具体应用, 而且掌握由这些理论和方法所构造编译程序的各个部件是如何在整个系统中协调运行, 这是实验最重要目的之一。其次, 必须合理地简化, 使学生比较容易完成。针对编译过程的五个阶段:词法分析、语法分析、语义分析与中间代码生成、优化及目标代码生成, 分别设置相应的实验项目。这些实验项目既和理论课内容相辅相承, 同时相互之间又互相关联, 构成了一个实验整体。采用这种实验教学体系所要求的实验学时较少, 一般为20学时左右, 并且可以跟随理论教学的进度安排, 这样既可以降低实验难度, 又利于学生及时将课堂知识应用于实验[5]。当然, 也可直接将实验部分设置为课程设计, 通常是要求设计一个简单语言的编译程序, 让学生用1~2周的时间来完成。这种实验教学体系与前一种相比更难, 需要学生在对编译原理知识系统理解掌握的基础上才能完成, 更加有利于学生对编译过程的有一个整体深入的认识。
2. 规范考核形式
考核是对学生学习效果的检验, 也是调动学生学习积极性的指挥棒, 对教学目标的实现具有至关重要的作用。“编译原理”实验课程的一个难点在于如何进行成绩评定。为了均衡理论和实验, 建议实验成绩占总评成绩的30%~40%。本着公正的原则, 笔者提出阶段考核和汇总考核相结合的成绩评定方法[6]。每个实验成绩由教师面试给出, 以学生对实验理论内容的理解和实现算法的思路为主, 并要求其分析具体源代码, 从而判断学生真正掌握知识的程度, 避免抄袭。在汇总考核阶段, 由学生主动申请, 采取公开答辩的形式, 答辩优秀的可以加分。通过以上措施, 较好地避免了以往实验中经常出现的偷懒现象, 同时也帮助学生树立了荣誉感和成就感。
五、结语
编译原理是一门理论性和实践性都很强的课程, 在计算机专业的教学体系中又有着非常重要的作用, 决定了该课程教学改革的长期性。通过“编译原理”课程的学习, 学生不仅能掌握编译程序本身的实现技术, 也能加深对程序设计语言的理解, 提高开发大型软件的能力。因此, 探索该课程的教学方法, 提高教学质量是从事计算机教育的工作者必须重视和探讨的问题。
参考文献
[1]赵银亮.浅谈编译原理课程的定位.西安邮电学院学报, 2010.7
[2]张昱, 陈意云, 郭宇, 李兆鹏.“编译原理”课程的教学内容选择的探讨.计算机教育, 2009.18
[3]刘洁, 黄贤英, 王柯柯, 曹琼.软件工程专业中编译原理课程的教学探讨.计算机教育, 2010.8 (16)
[4]王顺晔.“编译原理”课程教学方法的研究与实践.计算机教育, 2010.2 (3)
[5]王忠策.“编译原理”课程教学改革与实践探索.科技创新导报, 2010 (34)
安徽师范大学《编译原理实践》课程教学大纲 篇3
【关键词】编译原理 教学内容 课程实验
【中图分类号】H191【文献标识码】A【文章编号】1673-8209(2010)05-0-01
1 引言
编译原理课程是计算机科学与技术专业的重要专业课,它不仅能帮助学生更深入地了解计算机以及计算机程序的本质,还能提高学生进行问题求解的能力。本课程的理论性和实践性都很强。国外和国内分别从二十世纪六十和八十年代开始设置“编译原理”课程,从文献[1,2]两本专著的内容可以看出,几十年来,“编译原理”课程可以讲授的内容越来越多。设置该课程的目的在于系统地向学生讲叙编译程序设计的基本理论、编译系统的结构及编译程序各部分的设计原理和实现技术。通过对这些知识的学习,使学生既能掌握编译理论和编译方法等方面的基本知识,又具有设计、分析、实现和维护编译程序等各方面的综合能力。该课程一般包括理论教学和实验教学两部分。编译原理理论知识包括形式语言、有穷自动机等抽象内容及大量的算法,较难理解和掌握,因此“编译原理”的实验教学对于深化学生对所学理论知识的理解,提高学生的理论联系实践的能力和编程水平具有重要的作用。
本文根据编译原理课程的特点,结合自己的教学经验与我院的实际情况,探讨了普通本科院校编译原理的实践教学内容的设置。
2 课程实验的重要性
编译原理是集理论与实践于一体的一门课程,在理论课中所介绍的基本概念、原理、方法和算法,一定要通过实验加以理解和吸收,才能能够达到真正的理解、吸收和掌握。编译原理课程实验的内容主要放在对词法分析、语法分析和语义分析、中间代码生成、中间代码优化和目标代码生成的方法上。由于编译原理课程有很强的理论性与实践性,在学习时普遍感到内容抽象,不易理解,掌握起来难度很大。因此通过教学实践和对学生所做的调查表明,设计一组与理论内容相配套的实验是十分必要的。
3 课程实验的设计
针对编译原理课程的特点及要求,共设置了五个实验项目。这组实验既和理论课内容相辅相承,同时相互之间又互相关联,构成了一个实验整体。
实验一
题目:消去C、C++程序中的注释(2学时,必做)
实验目的: 掌握C语言文件的基本操作,消除源C语言程序中的注释,为以后的编译提供方便。
实验要求:对给定的带注释的C语言源程序,利用该程序去掉注释,输出去除注释的源程序。
实验二
题目:词法分析(必做,4学时)
目的:通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。
要求:编写程序对输入的源程序字符串进行词法分析,对符合下述文法描述的字符串,建立单词符号表,不符合的字符串给出错误信息。
内容:用扩充的BNF表示如下:
<标识符>→<字母>{<字母> <数字>}
<整型常数>→<数字>{<数字>}
<算符>→+ - * / ( ) =
<字母>→a b c … y A B C … Y
<数字>→1 2 3 4 5 6 7 8 9 0
实验三
题目:递归下降分析法(4学时,选做)
目的:根据给定的文法编制调试递归下降分析程序,以便对任意输入的符号串进行分析。本次实验的目的主要是加深对递归下降分析法的理解。
要求:对给定的文法,利用递归下降分析法对任意输入的符号串进行分析语法分析,对符合下述文法描述的字符串(表达式或赋值语句),给出中间代码,不符合的字符串给出错误信息。
内容:用扩充的BNF表示如下:
<赋值语句>→<标识符>=<表达式>
<表达式>→<表达式>{+<项> -<项>} <项>
<项>→<项>{*<因子> /<因子>} <因子>
<因子>→<标识符> (<表达式>)
即:S→i=E
E→E+T E-T T
T→T*F T/F F
F→i (E)
实验四
题目:语法分析程序LL(1) (4学时,必做)
目的:通过该实验使学生掌握描述语法规则的文法,以及加深对语法分析中自顶向下分析法中的预测分析法的理解。
要求:对给定的文法建立预测分析表,利用预分析法对实验一中词法分析产生的符号进行语法分析,对符合下述文法描述的字符串(表达式或赋值语句),给出中间代码,不符合的字符串给出错误信息。
内容:用扩充的BNF表示(同实验三)。
实验五
题目:语法分析程序LR(1) (4学时,必做)
目的:通过该实验使学生加深对语法分析中自下而上分析法中的LR分析法的理解。
要求:对给定的文法手工建立LR(1)分析表;利用LR分析法对实验二中词法分析产生的符号进行语法分析,对符合实验中文法描述的字符串(表达式或赋值语句)给出中间代码;不符合的字符串给出错误信息。
内容:用扩充的BNF表示(同实验三)
4 小结
编译原理课程在计算机课程体系中的重要地位,决定了其课程建设和改革的长期性,对培养计算机专业的人才也有着重要的作用,探索该课程的教学方法,提高教学质量是从事计算机教育工作者的必须重视的问题,也是一个永远值得探讨的问题,我们根据我系的实际情况合理的运用现代手段,综合考虑多种因素,将该课程的教学改革推向更科学的发展道路。
参考文献
[1] Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman. Compilers:principles,techniques,and tools[M]. New York:Addison Wesley,1986.
[2] Alfred V.Aho,Monica S.Lam,Ravi Sethi,Jeffrey D.Ullman..Compilers: principles, techniques, and tools[M]. 2nd edition.New York:Addison-Wesley,2007.
[3] 孟亚辉.关于《编译原理》课程教学的思考.科技信息,2008年第16期.
编译原理课程学习总结体会 篇4
编译原理是我们计算机科学与技术的一门非常重要的专业课,它主要介绍了高级程序设计语言编译程序构造的一般原理、基本设计方法、主要实现技术和一些自动构造工具。
在开始学习这门课程之前,老师就说过编译原理是一门比较难学的课程,它主要的难点在于它的概念性和理论性很强,内容丰富且抽象,具有严密的逻辑性,应用其他课程的的内容比较多。
通过这一学期的学习,我也发现了编译原理是一门理论性很强的课程,从文法和语言的概念到LL(1)文法和LR(0)文法的分析,几乎都是对具体问题的抽象。这门课还包含许多理论知识和算法,这些理论的学习和理解都存在着一定的难度。其中理论知识包括:词法分析器的构造,语法中各种分析器(LR, LL,SLR,LALR 等)实现与完成。因而,我们需要更多的时间来理解、掌握相关的知识。在学习的过程中也存在这许许多多的问题,比如说由于我之前对文法的概念不够清晰,在后面老师讲解具体文法的方式式,感觉自己很难听懂,影响的自己后期的学习效率,也使得自己对这门课程的兴趣大大降低。此外,这门课程的课时也安排得不多,每个周也就一两次课,这样也不利于我们队这门课程的理解和掌握,但好在我后面通过自己做题和询问同学之后将词法分析和语法语法分析的方法弄懂之后,自己对这门课程的兴趣又提起来。除了自己课后对知识进行了总结之外,最重要的还是老师的讲解,师在有限的课程中尽量将知识点以比较容易接受的方式给我们讲解,教我们用简单的方法理解记忆不同的知识,这样我们学习起这门课程来也没有那么难了。
在我看来编译原理这门课程不仅仅在于其本身的理论价值,更在于为我们解决问题提供的思维方式和方法。从LL(1)到LR(0),问题不断被解决的同时,又有一个个新的问题提了出来。对计算机语言世界的知识积累,像滚雪球一样越滚越大。这个逐渐递进,逐渐解决问题的过程对我来说是收获很大的。整个过程好像踏着前人研究编译理论的路线,不断感觉他们遇到的问题,更重要的是他们解决问题的思路。编译原理的课程带给我的不只是如何去编译程序这样的理论知识,相信更重要的是一种如何“自动计算”的思路。通过对相关编译问题的具体分析,让我体会最深的是一种“自动计算”的思想,同时完成编译试验后,更是感到了一种“自动计算”的快乐。”然而我明白自己虽然对编译有了一定的了解,我懂得了文法的分析,学会了构造确定和非确定有限自动机,学会了LL(1)文法和LR(0)文法等,但是并没有完全掌握,对于这些知识点的实质性和其他方面,更是认识不深。作为一名学习计算机科学与技术的学生,我明白编译原理是软件工程的基础,课程的结束并不意味着学习的结束,只有通过以后的学习,才能更深入地了解编译原理,才能将编译原理更好地应用到以后的学习和工作中去。
(黑龙江大学)编译原理读书工程 篇5
“编译原理课程设计”读书报告
学院 年级 专业 学号 姓名 报告日期 成绩
计算机科学与技术学院 2011级
计算机科学技术专业 20114872 李军 2013.07.05
黑龙江大学计算机科学技术学院
一、开发环境简介
“编译原理”课程是计算机专业中一门重要的专业理论课,是一门理论性和实践性都很强的课程。为配合《编译原理》课程的教学,培养学生的实际工作能力,加深对课堂教学内容的理解,通过设计一个小型编译器,更深刻地领会其基本概念、基本工作原理和实现方法,从而具有初步开发系统软件和应用软件的实际能力,特开设此课程设计。
通过小型编译器的设计与实现,使学生系统地掌握编译程序的总体结构以及词法分析程序、语法分析程序、语义分析程序、代码生成程序;掌握结构化设计方法;了解大型软件的设计技术。开发环境:visual c++6.0 开发语言:c语言 开发人:李军
指导教师:付立平老师
二、基本理论阐述、当前理论或实践应用现状
编译器: 高级计算机语言便于人编写,阅读,维护。低阶机器语言是计算机能直接解读、运行的。编译器将源程序(Source program)作为输入,翻译产生使用目标语言(Target language)的等价程序。源代码一般为高级语言(High-level language),如Pascal、C、C++、C#、Java等,而目标语言则是汇编语言或目标机器的目标代码(Object code),有时也称作机器代码(Machine code)。
工作原理: 编译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器语言)的翻译过程。然而,也存在从低级语言到高级语言的编译器,这类编译器中用来从由高级语言生成的低级语言代码重新生成高级语言代码的又被叫做反编译器。也有从一种高级语言生成另一种高级语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。
典型的编译器输出是由包含入口点的名字和地址,以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的EXE, 所以我们电脑上的文件都是经过编译后的文件。高级语言程序处理过程:
三、小型编译器系统架构
它是一个编译器的架构.通俗的来说,它实现了一个库,在这个库上,可以很容易的实现不同的编译相关的程序,当然,编译器自然是其中最重要的一个.当然其他像编译时间的代码分析也是很容易实现的。构造识别符号串的自动机、词法分析程序的构造、语法分析程序的构造、中间语言的生成程序、编译程序的代码生成。
四、小型编译器主要功能模块与实现
(1)功能介绍 用户提供源代码,使用编译器进行编译,先用词法分析程序构造出符号表,然后利用语法分析程序分析橘子的语法,接着根据文法分析程序分法,在语法制导翻译和中间代码生成中,采用逆波兰式生成四元式再转化为汇编代码。词法分析:
定义:
词法分析器的功能输入源程序,按照构词规则分解成一系列单词符号。单词是语言中具有独立意义的最小单位,包括关键字、标识符、运算符、界符和常量等(1)关键字 是由程序语言定义的具有固定意义的标识符。例如,Pascal 中的begin,end,if,while都是保留字。这些字通常不用作一般标识符。(2)标识符 用来表示各种名字,如变量名,数组名,过程名等等。(3)常数 常数的类型一般有整型、实型、布尔型、文字型等。(4)运算符 如+、-、*、/等等。(5)界符 如逗号、分号、括号、等等。输出:
词法分析器所输出单词符号常常表示成如下的二元式:(单词种别,单词符号的属性值)单词种别通常用整数编码。标识符一般统归为一种。常数则宜按类型(整、实、布尔等)分种。关键字可将其全体视为一种。运算符可采用一符一种的方法。界符一般用一符一种的方法。对于每个单词符号,除了给出了种别编码之外,还应给出有关单词符号的属性信息。单词符号的属性是指单词符号的特性或特征。示例:
比如如下的代码段: while(i>=j)i--经词法分析器处理后,它将被转为如下的单词符号序列:
词法分析分析器作为一个独立子程序
词法分析是编译过程中的一个阶段,在语法分析前进行。词法分析作为一遍,可以简化设计,改进编译效率,增加编译系统的可移植性。也可以和语法分析结合在一起作为一遍,由语法分析程序调用词法分析程序来获得当前单词供语法分析使用。
语法分析:
对任何输入串w试图从文法的开始符号出发,按与最左推导对应的顺序,构造w的语法分析树
如果构造成功,则w为相应文法的一个句子;否则w就不是文法句子
文法分析:
(3)算法描述 ①词法分析:
根据输入的句子从头开始扫描,独到一个字符后,判断它的类型,并更改相应的状态,下一次读入时,根据当前的状态和输入的字符的类型进行状态的转换和对次的添加。状态机在一定程度上反映了此法的一些规则,如不能一数字开头命名变量。
全局变量:
ch---字符变量:存放当前读进的源程序字符 token---字符数组:存放构成单词符号的字符串 调用函数
getch()---读字符函数:每调用一次从输入缓冲区中读进源程序的下一个字符放在ch中,并把读字符指针指向下一个字符
getbc()---读空白字符:每次调用时,检查ch中的字符是否为空白字符;若是空白字符,则反复调用getbc(),直至ch中进入一个非空白字符为止 concat()---字符串连接函数:把当前ch中的字符与token中的字符串连接。letter(ch)---字母字符判定函数:判定 ch 中的字符是否为字母,并返回true 或 false。
degit(ch)---数字字符判定函数:判定 ch 中的字符是否为数字,返回true 或 false。
reserve()---关键字判断函数:对token中的字符串查关键字表;若它是一个关键字, 则回送它的编码;否则,回送标识符的种别码。
语法分析:
算符优先文法的描述: 只规定算符之间的优先关系,也就是说只考虑终结符之间的优先关系。由于算富有先分析不考虑非终结符之间的优先关系,在规约过程中只要找到最左素短语就可以规约。
如给定一个文法G[S]:
S->#E# E->E+T E->T T->T*F T->F F->P/F F->P P->(E)P->i
利用算符优先文法分析过程处理如下:
1)计算给定文法中任意两个终结符对(a,b)之间的优先关系,首先计算两个集合FIRSTVT(B)={b|B->b„或B->Cb„} LASTVT(B)={a|B->„a或B->„aC}
语法制导翻译和中间代码生成: 定义语义函数和语义变量 语义函数emit 格式:emit(T=arg1 OP arg2)功能:生成一个三地址语句,并送到输出文件中 语义函数newtemp 格式:newtemp()
功能:产生一个新的临时变量名字,如T1、T2等,并回送新的临时变量名的整数码
注意:对临时变量有两种不同的处理方法(1)送到符号表(2)不进符号表,临时变量单词值部分用整数码表示 语义过程Lookup 格式:Lookup(i.name)功能:审查i.name是否出现在符号表。如在,则返回其指针;否则,返回NULL 语义变量:E.place 存放非终结符E值的变量名在符号表中的入口地址或临时变量名的整数码(4)程序流程图 词法分析:
语法分析: ‘#’’S’入栈,当前终结符送a上托栈顶符号放入X若产生式为X->x1x2x3..xn,按逆序入栈YNX inVT?YYX=a?读入下一符号M[X,a]是产生式吗NX=’#’?YN出错出错X=a?Y结束
预测分析程序框图
文法分析:
语法制导翻译和中间代码生成: 开始读入字符输入表达式进行扫描分词判断是字母还是数字还是运算符判断语句是否合法运算符,判断运算符的种类若为双目运算符则入符号栈,单目则出栈,修改状态位,若为(直接入栈,为)则一直出栈直到(为止根据变量在符号表中的位置来判断它的属性和值如果当前字符为 0-9的数字,则将其添加到结果(后缀表达式)串中。再次扫描输入串如果当前我字符为 +,-,*,/中的任何一个,如果当前字符的优先级高于栈顶运算符的优先级,则直接 将其压入栈中。当前字符的优先级小于等于栈顶运算符的优先级,则将栈中所有优先级大于等于 当前运算符的运算符弹栈,并添加到结果串中,然后将当前运算符压入栈中.结束(5)测试用例与实验结果 02
0
311 04
0
5五、读书工程心得总结
这是我这学期收获最大的一门课,在付老师的带领下,我完整地了解了编译器的整个流程和架构!通过老师的帮助和自身的努力,以上便是我对这门课的答卷,我深知,自己能力有限,不可能达到完美!但至少我知道,我努力的方向,并且为此不懈奋斗者!希望这段程序,能成为我大学最美好的回忆!
六、参考文献
《编译原理》课程教学改革探讨 篇6
编译原理是计算机科学与技术专业中比较重要的专业课程, 特别是对于今后将从事计算机软件工程的技术人员来说, 编译原理技术是极为重要的基础知识之一。
编译原理课程主要介绍编译程序构造的一般原理、基本设计方法、主要实现技术和一些自动构造工具。编译器的构造综合了计算机科学的各个方面, 包括计算机理论、程序设计、软件工程、数据结构等, 是理论性强同时也是理论应用于实践的成功典范。虽然绝大多数的程序设计和开发人员不需要写自己的编译器, 也不一定非要读懂任何编译器的代码, 但是编译程序构造的基本原理和技术广泛应用于一般软件的设计和实现, 因此很好地掌握编译原理这门课程, 可以更加深层次地理解程序语言和内部机制, 对以后从事计算机项目开发, 很多思想可以借鉴, 受益匪浅。
2 编译原理课程的教学现状
我们是新建的本科院校, 并且学校坐落在民族地区, 学生在平时的学习中与外界的实践接触较少。对于计算机学科来说, 这使得很多课程的教学偏重理论, 显得枯燥, 增加了难度。特别对于编译原理这门课程, 接触过的老师和学生大概都有相同的感受:这是一门“难教难学”的课程, 甚至大多学生认为这是计算机高年级课程中难度系数最高的课程, 内容比较抽象、理论性很强、对实践要求高。
2.1 没有清楚认识课程的学习意义
在学习过程中, 学生大多理解这门课程只是介绍编译程序的构造, 而自己以后很少会涉及从事编译器设计工作, 因而认为没有实际应用价值, 没有真正领会这门课程在整个计算机知识系统以及理解软件理论和开发方法上的潜在意义。
不管是国内还是国际知名高校, 从本科、硕士到博士都有关于编译原理课程的整体规划设置, 这足以说明该课程在计算机专业中的位置是不可忽略的。
2.2 学习兴趣和热情的严重缺乏
学生理解的不实用思想导致了学习兴趣的大幅下降, 被动的学习加上课程本身的难度和深度使得学生的学习积极性降到了低点。较多的学生反映课堂上能听懂老师的例题讲解, 但是由于没有真正把知识点落实, 课后独立完成习题觉得很困难, 慢慢地产生畏难情绪, 如此的恶性循环滋生了对课程学习的强大障碍。
2.3 纯理论式的传统教学
在前些年编译原理课程的教学中, 理论教学比例过大甚至忽略了实践教学, 没有真正将实践和理论结合起来。在课堂上老师扮演着主要角色, 采用传统的教学模式, 以教师为中心、老师讲、学生听, 没有更好地调动学生的积极性, 因此教学效果也不是那么好。
2.4 课程实践的匮乏
编译原理的实践教学所占比例小, 教师和学生都忽视了实践教学在整个课程中的重要性, 脱离了实践的理论学习会显得更加枯燥和抽象。目前课程设置中增加了实践教学, 但是由于编译原理的实验题目偏难, 并且需要实践者有足够的理论基础和较强的编程能力做支撑, 所以大多数学生仍然觉得编译原理的实践是件棘手的事情。导致了学生对编译原理的理解往往停留在书本的理论概念上, 不明白怎样才能把理论应用到实际的编译程序设计中。
3 推进编译原理课程的教学改革
由于编译原理课程涉及的理论知识多, 可研究性强, 应根据学生的实际情况选择合适的教材、运用适当的教学模式来组织教学内容、理论实践相结合, 以更好地提高教学效果, 满足不同层次学生的需求。
3.1 教材的改进与选择
现在程序设计语言已经从过程式转向对象式语言, 比如C++、C#、Java等就是目前在软件设计中流行的面向对象的编程语言, 程序设计模型的变迁带来了算法描述工具的变化。面向对象语言已经成为高校计算机专业课程的主流语言, 社会上的计算机应用领域也大量使用面向对象语言手, 各种电子产品的嵌入式软件非常广泛用到面向对象技术。在这样的背景下一些程序设计的后继课程诸如数据结构等也进行了同步的改进, 已出现了用Java或者C++描述的数据结构教材, 但是大多高校使用的编译原理教材还是没有大的变化, 教材中的编译算法和模型仍然用C语言甚至Pascal语言来描述。
这种主要关注面向过程的编译技术的教材, 会让学生觉得编译原理课程和当前的程序设计应用较为脱节。因此对面向对象编译技术的研究迫在眉睫, 分析面向对象技术后台的编译系统是非常有必要的, 这样更贴近应用, 更利于培养学生的学习兴趣。由此, 我们可以选择用对象式语言描述编译算法和教学模型的编译原理教材, 将面向对象的编译技术有机结合到教学中。例如目前国外或者国内某些高校选择的用Java语言描述的编译原理新教材, 其中像高等教育出版社出版的《现代编译程序实现——Java语言》 (影印版) 教材可视为典型。改进后的教材在编译原理前面部分的词法分析和语法分析被人上变动很小, 主要增加了针对面向对象语言的语法结构及其语义特征, 着重从类及类的继承结构上, 讨论编译实现技术及构造面向对象编译器的思路;在后半部分的语义分析、代码生成等内容上调整幅度较大, 面向对象的作用域特性、类的封装、继承以及多态的典型特性都将体现在教材中。
3.2 教学模式的转变
打破传统的以教师为中心、一味灌输式的教学方法, 采用更能激发学生兴趣和潜能的“以学生为主, 师生互动, 实例教学”的教学模式。在教学中, 教师扮演好传授、指导、组织和帮助的角色, 利用问题及情境等充分发挥学生的主动性、积极性和创造性。
在这种教学模式下, 教师在课前要做更为充足的准备, 对整个课程体系要非常清楚。重要章节的知识点在课堂上结合实例做详细讲解, 而对于容易点的内容, 老师首先提炼出核心问题, 让学生带着问题自主学习。第一阶段结束后由学生讲解, 展开课堂讨论, 最后教师再总结归纳。这样学生不再是只带耳朵来听课的机器, 更多的时候由他们来主导控制课堂, 由完全的被动转化为主动, 将会大大地提高教学效果。当然在这个过程中教师要有足够掌控课堂的能力, 给出恰当的涵盖相应知识面的问题, 能在适当的时候做引导者促进讨论的展开, 让大多数学生能在这种互动的氛围中掌握课程的知识。
枯燥的理论转化为实例教学, 效果也是事半功倍。比如在编译原理的基础篇中, 关于词法分析、语法分析中很多理论描述都比较抽象复杂, 此时教师先不要死板地分析理论, 而是借助实例的讲解, 案例完成后再总结归纳理论知识点。这样通过实例引导学生对知识的掌握, 既提高了教学效果又营造了轻松愉快的课堂氛围, 师生互动得以更良性地发展下去。下面通过一个具体的例子简单分析“实例教学——知识归纳——案例实践——总结”的教学模式。语法分析中有个重要的内容是项目集规范族C的构造, 这是自下而上语法分析中LR (0) 以及SLR (1) 分析表的关键, 但是关于文法的项目集规范族的构造算法描述复杂, 我们从案例出发引导学生推导到算法规则。例如:文法G[S]为E→a A∣d, A→c A∣d, 要给出该文法对应的项目集规范族C。教师先讲解例子;再归纳出求解过程:首先拓广文法, 引入一个新的非终结符S’作拓广文法的开始符号, 构成项目S’→S作为唯一的接受态, 用closure ({S’→.S}得到初态的项目集;对初态集或其他构造的项目集求go (I, x) , 得到新状态J的项目集;重复前面两个步骤直到不出现新的项目集为止;接着分析算法;最后把布置练习题。让学生在老师分析的基础上自主完成练习, 领会算法的思想, 这样比直接分析长篇幅的算法效果更加明显。
3.3 课程实验的深化
目前学校提倡“本科学历 (学位) +职业技能素养”的办学模式, 把实践教学提到了相当的高度。整个课程体系及人才培养方案都在强化实践, 同时编译原理课程属于技术学科, 必须注重理论与实践的有机结合, 深化课程实验的重要性, 加强对学生实践动手能力的培养。众所周知, 编译原理的实验难度很大, 有的编译器实现程序代码多达十几万条指令构成。因此我们一定要避免直接让学生分析和设计编译器, 要循序渐进, 按照高级程序语言的编译过程模块化地设计实验, 同时结合系统的编译原理实验教材指导学生逐步深入地进行课程实践, 真正地把实践教学落到实处。
分层次制定课程的实践环节。最初可以借助面向对象编程语言的编译模型工具生成简单代码的词法分析和语法分析程序, 让学生理解代码的程序结构;在此基础上添加语义动作, 理解虚拟机生成代码;最后扩展教学模型, 分层次构造完整的编译程序。在综合实验部分, 教师可以设置好程序代码框架, 甚至提供源代码将关键模块挖空, 指导学生完成核心代码的编写与调试, 有方向性地指导学生完成课程设计, 以此让他们能投入更多的热情与精力去实际地开展有深度和广度的课程实践, 促进理论的进一步掌握。
4 结束语
总之, 编译原理在高校计算机专业课程体系中的地位是不可忽视的, 我们需要与时俱进, 适当调整课程教学的体系和内容, 以更好地顺应计算机技术的发展。怎样在有限的学时内让学生既能掌握扎实的理论, 又能切实提高实践的能力, 这是编译原理课程教学面临的难题。教师应通过优化教学改革、不断探讨, 采用多样的教学手段、灵活的教学方法, 不断地提高编译原理课程的教学质量。
摘要:以新建本科院校为背景, 从学生学习兴趣、教师教学、课程实践等几个方面分析了当前编译原理的教学现状, 提出了对教材、教学模式以及课程实验的基本改革思路, 用以提高编译原理教学效果。
关键词:编译原理,教学改革,面向对象,实例教学
参考文献
[1]何炎祥, 伍春香.计算机专业不需要开设编译原理课程吗[J].计算机教育, 2009, (4) .
[2]Alfred V.Aho, Ravi Sethi.编译原理技术与工具 (英文版) [M].北京:人民邮电出版社, 2010
[3]胡学联.编译原理课程的调态与转型[J].计算机教育, 2006, (11) .
编译原理学习心得 篇7
从联系最紧密的操作系统来说吧,你写多线程/多进程的程序就得和操作系统的知识打交道。写多线程得加锁吧,临界区、死锁的四个条件之类的标准的操作系统的内容吧(不得不吐槽一下,某国内一线电商干了三年的程序猿,写多线程居然不知道加锁,也是醉了)。进程间通信的几种方式什么管道、socket、共享内存等,这也是操作系统的内容吧。文件系统,这也是经常要打交道的东西。还有内存什么的,你做 Android 开发,这些里边有很多东西都在系统层面被封装好了,但是你要是不知道原理,一旦出了错根本无从调试,况且你该不会打算写一辈子写 Android 就是填逻辑吧。
然后,是编译原理,普通的程序猿是接触不到编译器或者虚拟机的开发的。但是这并不意味着编译原理就用不到。说个最常见的读取配置文件,只要你的配置文件有自定义的语法,你就要用编译原理的东西。还有类似于自动生成代码啦、正则表达式啦这些都算是编译原理的内容。你既然是写 Java 的不了解虚拟机怎么可以,最基本的字节码总是需要能看懂的吧,分析一些疑难杂症的时候字节码还是很有用的。
最后,是计算机原理,如果只是做应用开发的话计算机原理其实不必要掌握的多深入,但是一些基本的概念还是要清楚的。比如 寄存器、缓存、中断什么的,关键的时候可以帮助你调试。在一些对性能要求非常高的场合,也是很有作用的。此外,学了计算机组成基本上汇编差不多能够看懂了吧,这个对于优化代码、查错、反汇编还是很有用的。
编译原理课设总结(定稿) 篇8
经过一个星期的编译原理课程设计,在老师的指导以及小组同学的互相帮助下顺利完成该课程设计。通过该课程设计,收获很多。
此次课设,我们小组用的是java语言,在课设过程中,用到了以前开发过程中所没有的探索过的很多新方法,最直接的影响就是让我对java语言的认识与理解更近一层。并且掌握了什么是编译程序,编译程序工作的基本过程及其各阶段的基本任务,对课本上的知识有了更深的理解。
因为本实验用了java语言编写,个人觉得相比C语言模块更加清晰明了。在该词法分析程序中,我们用了java中的split方法对输入串进行分割,简单易懂。其次,在字符匹配过程中,引进了正则表达式,让输入串与之匹配,极大地缩减程序的繁琐性。同时,java的面对对象的性质在程序中得到充分的体现,在代码的编写过程中,将各种判定封装为函数,主函数通过调用这些封装函数完成功能,摒弃了C语言结构化的繁琐,使整个处理函数清晰可读。在测试多个用例时,发现程序的很多小错误,但最后都能够一一解决,尤其在这个过程中,我也充分体会到了团队合作的力量。此次课设更加深了对java语言的认识,并熟悉了java语言中正则表达式的用法。
安徽师范大学《编译原理实践》课程教学大纲 篇9
一、建构主义理论基础
建构主义也称结构主义, 最早起源于瑞士著名心理学家皮亚杰的“发生认识论”。皮亚杰认为个体的认知发展来自于内因和外因的相互作用, 通过同化与顺应两种形式建构成动态的认知结构, 在与周围环境“平衡———不平衡———新的平衡”的循环中不断得到促进, 达到一种平衡的认知状态。该理论的核心是:以学生为中心, 强调学生对知识的主动探索、主动发现和对所学知识的意义的主动建构。
建构主义理论指导下的教学主体在教学过程中的职能与传统的不同:知识不是通过教师传授得到的, 而是学习者在一定的情境即社会文化背景下借助获取知识的过程中其他人 (包括教师和学习伙伴) 的帮助, 利用必要的学习资料, 通过意义建构的方式而获得的。教学不是传授、灌输知识的活动, 而是一个激发学生建构意义的过程。教师的价值就体现在能够激励学生以探究、合作等方式进行学习, 教师是学生学习的引导者、辅助者和学习资料的提供者。这就要求学生在学习过程中发挥主体作用, 主动去搜集、分析有关的信息和资料, 对学习中的问题提出各种假设并努力加以验证, 同时要把学习的内容尽量和自己已经掌握的知识相联系, 加以思考, 从而参与协作学习。
二、建构主义理论指导下教学内容的取舍
为帮助学生对编译理论的理解和对实际编译器的剖析, 教师要指导学生对编译器代码进行阅读, 加深他们对抽象理论和算法的理解。同时, 要删除一些理论证明, 弱化代码优化和中间代码生成, 缩短从理论到实践的距离。
建构主义认为个体的主动性在建构认知结构过程中起着关键作用, 而实践教学正是学生主动参与最多的一个教学环节。目前, 大多数高校编译原理课程的实践环节都是要求学生能使用计算机编译一个小型程序。这样就不能让学生看到编译原理在实际中的应用, 导致很多学生认为学习编译原理就是为了设计编译器。这对他们走上工作岗位后没有太大帮助, 而且对于多数学生来说, 他们会早早就放弃努力, 无法达到练习的目的。建构主义认为学习者往往以自身已有的经验和知识为基础, 通过新经验与已有经验的相互作用而不断充实、改造和丰富自己的经验和知识, 因此新知识的建构只有建立在已有知识的基础上才能收到良好的建构效果。于是, 教师可以选择一个C语言的子集作为分析对象, 让学生根据自己的情况选择合适的子集, 放弃以往常用的类PASCAL语言。另外, 教师要充分考虑编译原理在实际中的应用, 突出编译原理的实用性, 鼓励学生把学习的知识用于实现一些小的实践项目, 增加一些具有一定实际价值的实验选项, 激发学生的学习兴趣, 帮助学生促进意义建构的完成。
三、基于建构主义理论的编译原理教学实践
建构主义学习理论认为情境、协作、会话和意义建构是学习环境中的四大要素;学习环境中的情境必须有利于学生对所学内容的意义建构;协作发生在学习的整个过程, 对学习资料的搜集与分析、假设的提出与验证、学习成果的评价和意义的最终建构均有重要作用;会话是协作过程中不可缺少的环节, 学习小组成员之间必须通过会话商讨如何完成规定的学习任务计划;意义建构是整个学习过程的最终目标。建构主义教育理论倡导以学生为中心, 而教师在整个教学过程中起着组织者、指导者、帮助者和促进者的作用, 利用情境、协作、会话等学习环境, 充分发挥学生的主动性、积极性和创造精神, 最终达到使学生有效地实现对当前所学知识的意义建构的目的。
1. 创设情境
编译系统大而复杂, 编译理论深奥而抽象, 所以学生刚接触这门课时仅是对某种高级语言的基础知识有所了解, 并不了解高级语言是如何使用的, 而且一部分学生在学习之初会认为这是一门纯理论的课程, 从而失去学习兴趣。因此, 教师若能运用一个实例让学生看到编译程序在程序开发平台中所处的地位, 就会使学生自然而然地了解编译、语法、语义及错误检查和处理的概念性问题, 激发起他们强烈的好奇心和学习积极性。
编译器技术部分主要包括一些经典算法, 这些算法抽象复杂, 不易理解。对此, 教师如果采用传统的讲课方式, 势必让学生知难而退。教师要想收得良好的教学效果, 就要借助多媒体技术, 用图形图像把抽象的理论形象化, 寓教于乐, 从而培养学生的学习兴趣。
2. 自主学习
自主学习是建构主义理论中以学生为中心进行教学设计的核心内容, 但教师的主导地位也不能忽视。在学生自主学习的过程中, 教师要向学生提供解决问题的有关线索, 如需要搜集哪些资料、如何获取相关信息等。对于学生自学起来较容易的内容, 教师要采用指导学生备课、讲解和教师总结的方式进行。这样, 可以激发学生的参与热情。
3. 协作学习
在实践教学环节中, 教师根据学生的能力、性别, 采用互补的搭配方式把学生分为若干小组, 然后在每组设小组长负责实验的学习讨论并对各成员进行分工。在实践期间, 学生和学生、学生和教师之间互相讨论、交流, 有利于各种观点的碰撞, 使学生从中受到更大的启迪。
4. 展示交流
每一次实践结束后, 各个小组以小组长为代表汇报作业情况, 由其他小组自由提问, 以实现各小组之间的交流。实践证明, 这种各组分享实践成果、互相借鉴的做法可以提高学生解决问题的能力。最后, 大家共同选出优秀小组, 以此更好地激发大家的学习兴趣。
5. 教学评价
建构主义教学模式强调发展性评价, 即教学评价更重视学生是否完成了对新知识的意义构建、发展了创造性思维。在实践教学中, 教师应坚持对学生进行发展性评价, 即更注重学生的学习过程和学习能力的提高, 注重学生的思维能力尤其是创造性思维和反思能力的培养。学生完成实验是一个特别能体现能力发展的过程, 从课前准备到课堂操作再到课后讨论, 每个学生的能力和优势都得到了发挥。这个过程使教师获得了足够的评价空间, 同时更激发了学生的学习积极性和创造热情。学生的创造性思维会因为发展性评价而得到最大限度的发挥。当教师更关注学生的学习过程而非结果时, 学生更易获得自信, 这必然推动学生不断提高创造性思维能力。
实践证明, 将建构主义教学模式和方法应用于编译原理课程, 可以使学生不再是被动的学习者, 而是教学活动的积极参与者。这就能够增强学生的学习积极性, 提高他们的学习兴趣, 帮助他们打牢理论基础。同时, 通过编程技能的训练, 学生具备了较强的实践能力, 做到学以致用, 真正收到良好的学习效果。
参考文献
[1]何克抗.建构主义的教学模式、教学方法与教学设计[J].北京师范大学学报 (社科版) , 1997, (5) .
[2]张建伟, 陈琦.从认知主义到建构主义[J].北京师范大学学报 (社科版) , 1996, (4) .
[3]薛国凤.建构主义教学理论的实践影响及效果分析[J].外国教育研究, 2003, (11) .
[4]莫雷.教育心理学[M].广州:广东高等教育出版社, 2003.
安徽师范大学《编译原理实践》课程教学大纲 篇10
统计学是借助收集、整理与分析数据等手段,推断所测对象的本质,甚至预测对象未来的一门综合性科学。在科学技术飞速发展的今天,统计学广泛吸收和融合相关学科的新理论,不断开发应用新技术和新方法,深化和丰富了统计学传统领域的理论与方法,并拓展了新的领域。2012年以后,人们迈入大数据时代,大数据时代的数据统计分析师是企业或国家竞争的核心力量。高等学校统计学的教学过程中,要注重理论的灌输与强化,更要不断提高学生进行数据分析与数据挖掘的能力,适应移动互联网和大数据时代的具体要求。推进《统计学原理》实践教学体系的改进与优化是统计学教学中的关键环节,能够显著提高高校学生“提出问题、分析问题、解决问题”的能力。
一、构建《统计学原理》课程实践教学体系应遵循的科学原则
(一)科学性原则。
《统计学原理》课程实践教学体系改革要立足学院学科建设和非统计类专业发展的实际,适应会计、财务管理、市场营销、工商管理、经济学、国际贸易、农业经济管理七个专业的具体需求,合理确定实现途径与保障措施,科学制定教学体系。
(二)简易性原则。
《统计学原理》课程实践教学体系改革应抓住改革的重要领域和关键环节,在保障工作成效的前提下,充分利用现有资源,为培养高素质的应用型经济管理类人才提供必备的土壤与养分。
(三)目标整合原则。
《统计学原理》课程实践教学体系的设计要符合学院对七个专业的整体培养定位,不断体现和满足非统计类专业学生个体的需要,才会使培育学生数据分析与处理的目标与专业的整体培养方案相匹配,趋于一致。
(四)互补原则。
《统计学原理》课程实践教学体系设计的各个环节或小实验之间必须互有逻辑,交叉互补,优化组合,这样统计模拟实习的整体效应才能凸显,教学质量才能得到充分保障,才能达到“1+1>2”的协同互补效果。
二、构建《统计学原理》课程实践教学体系应满足的具体要求
通过本课程的学习,主要锻炼学生数据收集与整理、数据分析与深度挖掘的能力。《统计学原理》课程实践教学体系应达到以下教学要求与目的:(1)通过本课程的学习,学会围绕问题,收集相关数据,学会对数据的分类、制图、描述性统计等相关内容;(2)在本课程的学习之后,要求学生掌握参数估计的相关知识,能够学会参数的假设检验与方差分析,指出变量之间的差异性;(3)通过本课程的学习,学会变量之间的相关分析、回归分析、聚类分析和因子分析等内容,掌握数据挖掘的相关技术,为决策的制定提供支持;(4)通过本课程的系统学习,要求学生学会时间序列数据的处理,会进行长期趋势与季节指数的求解,能够进行数据预测,以指导相关的生产或营销活动。
三、《统计学原理》课程实践教学体系构建的总体设想与模块架构
(一)《统计学原理》课程实践教学体系构建的总体设想。
通过查阅与梳理国内外文献,在教研室同事的积极探讨与充分交流的基础上,本文提出了《统计学原理》课程实践教学体系的总体设想。实践教学的主要目的是锻炼学生利用统计学理论与知识分析问题及解决问题的能力,提高学生在大数据时代的创造性与创新性。具体设想如下所示:《统计学原理》课程实践教学体系分为理论篇与实验篇两个部分,理论篇主要通过案例教学的方式,增强学生将理论知识与具体案例相结合进行学习的能力;实验篇主要采用统计软件的方式,训练学生收集数据、分析问题与提出具体方案的技能。
(二)《统计学原理》课程实践教学体系构建的模块架构。
1.“问题取向”的理论篇内容实践教学体系设计
理论篇实践教学主要在多媒体教室进行,通过借助经济、管理、金融、医学、农学等领域的经典案例,切入统计学方面的相关问题,吸引学生对相关问题的关注。围绕案例在课堂上通过师生之间、同学之间的互动与交流,提高学生从统计学的视角思考问题与分析问题的能力,这也是案例教学在统计学教学中的创新型应用。同时,在案例问题的解决过程中,逐步引入知名的统计软件,如EXCEL、SPSS、STATA等,透过软件解决案例中的问题,帮助开启实验教学的大门。
2.“项目主导”的实验篇内容实践教学体系设计
实验篇实践教学是指在统计学实验教学过程中主要采取“项目教学”的方式,促进高校学生在统计模拟实验中团队协作、团队分工、自主学习等能力的提高。这种实践教学需要将统计模拟实验分成具体的项目,让学生通过小组与个人的努力,执行项目的实施。具体的实验篇实践教学体系内容如下:第一阶段为 EXCEL模拟实验,主要包括用EXCEL搜集和整理数据(实验一)、描述统计分析过程(实验二)、用EXCEL进行参数估计和假设检验(实验三)、用 EXCEL进行方差分析(实验四)、用EXCEL进行时间序列分析(实验五)等;第二阶段为SPSS实验阶段,主要包括基本统计分析(实验一)、均数间的比较(实验二)、相关分析(实验三)、回归分析(实验四)、聚类分析(实验五)。
四、推动《统计学原理》课程实践教学体系高效执行的保障措施
(一)引进先进实践教学理念,优化实践教学模式。
在《统计学原理》课程教学过程中,高等学校尤其是财经类院校需要引进西方先进的实践教学理念,逐渐改善“填鸭式”的教学模式,转向“学生高度参与、师生共创优质课堂”的教学模式。促进学生理论联系实际的能力提高,促使学生将描述统计分析、相关分析、回归分析、聚类分析、时间序列分析等知识运用到实际经济现象或管理活动的实践中,锻炼学生的操作技能与动手能力。通过实践教学的改革,需要学生利用EXCEL收集与整理数据,通过SPSS软件挖掘与分析数据,为学生能力的全方位提高奠定基础。
(二)教学形式多元化,不断提高实践教学课堂质量。
在《统计学原理》课程的实践教学过程中,高等学校需要丰富教学形式,改变过去单一的理论教学与操作演练的形式,不断引入“案例教学”“项目教学”“视频教学”“辩论式教学”“汇报式教学”等教学形式。通过教学形式的多元化,将枯燥的统计学原理理论演绎成丰富多彩的“理论联系实际,展示手法多样”的优质课堂,不断提高实践教学质量,强化教学效果,促进学生在各种教学形式中汲取《统计学原理》的知识精华与养分,培养学生解决问题与数据挖掘的能力,以及对社会经济发展中的现象进行推理与预测的技能。
(三)强化师资队伍建设,打造卓越教学团队。
高等学校《统计学原理》实践教学高质量的基石和关键是卓越的师资队伍和教学团队的不断优化与建设。以石河子大学经济与管理学院为例,统计学原理专职教师仅有3名,统计模拟实验教学教师2名,并且隶属于不同的教研室,承担学院7个专业学生的课程,师资匮乏导致严重的师资比失调,师资队伍与教学团队建设问题已经成为经管学院统计学教学质量提高的瓶颈,急需优化与调整。对于高等学校来说,一方面要通过引进高层次人才,加强师资队伍的培训,达到强化师资队伍的目的,另一方面要积极促进教师参与国内外访学与学术交流,多开展教学研讨会,培育卓越的教学团队。
(四)制定质量控制评价体系,保证实践教学高效实施。
《统计学原理》实践教学体系的高效实施,一方面需要先进的实践教学体系的设计与执行,另一方面需要加入管理学领域的控制要素,需要建立《统计学原理》实践教学质量控制与评价体系,制定规范的实践教学制度与流程,从教师授课、学生实验报告撰写、教师与学生之间的互动等各个方面把握。具体而言,“问题取向”的理论篇实践教学需要案例新颖,与知识点融合紧密;“项目主导”的实验篇实践教学要求实验项目科学合理,实验报告撰写要有规范要求,能够运用统计学理论知识解决实际遇到的各种领域的具体问题。
(五)整合软硬件资源,不断完善教学设备设施。
安徽师范大学《编译原理实践》课程教学大纲 篇11
(2) 信息技术的应用, 加强了马克思基本原理概论教师在教学中的引导作用。利用信息技术进行教学活动时, 在课堂教学中摒弃了“黑板+粉笔”模式, 取而代之的是精美的视频图像, 使学生容易进入教学情境, 有利于学生思维的打开和提升, 也有利于学生的思想感情与教学内容产生共鸣和交流。[4]利用信息技术的课堂教学, 使教学内容更加丰富、生动, 易于创设教学情景、调动学生的积极性, 引导学生主动参与到学习过程中来。
(3) 信息技术的应用, 丰富了马克思基本原理概论课程的教学内容。以往单一的.教学模式, 所能够表达的信息是有限的。[5]信息技术在马克思基本原理概论课程中的应用, 极大的丰富了教师授课的内容。教师利用信息技术制作的课件, 具有直观性、容量大、快捷性、可反复演示再现情景等特点, 能够把教学的重点、难点很好地表现出来。
(4) 信息技术的应用, 提高了学生的信息技术素养和能力。信息技术要求学生能够发挥主动性。将互联网和手机渗入到教学过程中, 就要求学生具有利用信息技术进行学习能力。[6]而且通过利用信息技术, 使学生具有信息技术素养, 渐渐养成终身学习的态度。
(5) 信息技术的应用, 能够激发学习兴趣、提高学习效率。在马克思基本原理概论授课过程中, 由于信息技术的出现, 能够根据授课内容进行情景和案例设置, 并通过生动的音视频吸引学生注意力, 激发学生的求知欲, 培养学生分析问题、解决问题的能力。因此信息技术在教学中的应用, 不仅提高了学生的学习情趣, 而且也调动了的思维意识, 提高学习效率, 更好地主动学习。[7]
2 信息技术在教学实践中的应用对比试验
为了说明在马克思基本原理概论教学中应用信息技术的作用, 在授课中采用了对比试验的方式进行验证。试验的班级是某高校大一的全部学生, 共计2236人, 在讲授“资本主义的形成及其本质”内容时, 将所有教学班级人为分成采用信息技术教学方式的A部1145人, 和采用普通的授课方式B部1091人。A部在讲授时, 要求学生每次课前利用信息技术进行预习, 在上课时, 首先由学生在讲台上展示自己预习的成果, 并和其他同学根据展示的信息, 进行相关的研讨;其次由教师再次运用信息技术方式进行必要的补充、归纳与总结。学完本单元之后, 立即进行测试, 测试试题有5种题型, 覆盖了该单元的所有重要知识点, A、B两部分学生各分数段人数及所占百分数如图1、2所示。
从图中可以看出, 2个部分学生由于采用不同的教学方式, 新单元学习之后测试的成绩就出现了明显差别, A部成绩就表现出强于B部。究其原因, A部由于采用信息技术方式, 教师起引导作用, 学生成为学习的主体, 在学习过程中体现出的积极性、主动性和趣味性都比较强烈, 而B部在学习过程中则感觉不到这种氛围, 因此导致2个部成绩出现显著的差异, 从而也说明了信息技术对马克思基本原理概论课程教学具有很好的作用。
3 信息技术在思想政治课程中应用需要注意的几个问题
虽然信息技术在思想政治课程中具有显著作用, 但是在实际应用时也应该注意以下几个问题:
(1) 教学过程中要体现学生是教学的主体。在课前的预习时, 一定要给学生布置相关的问题, 让其利用信息技术手段解决布置的问题, 而不是简单的点到为止。在授课时, 要考虑是否有利于培养学生的创新思维能力和多角度思考问题的能力, 要充分发挥学生的探讨精神。在课后的复习时, 也要利用信息技术的无时空限制的特点, 做到和学生的充分沟通。只有这样, 才能体现学生的主体地位。
(2) 教师课程内容准备要体现简、精、新。教师在课程内容的准备时, 会花费大量时间制作课件, 但是一定要避免华而不实, 做到简约透彻即可。这样做既能提高课堂效率, 又可以把精力放在教材和教法的深入研究上。教师在准备内容时要精挑细选, 要有足够的针对性和实时性, 以此提高学生分析问题和解决问题的能力。
(3) 教学过程中要能够做到师生互动。在利用信息技术进行教学时, 一定要考虑学生的接受能力, 并且利用体态、眼神等进行师生间情感的交流, 把握学生的心理动态, 才能充分发挥信息技术的作用。
总之, 信息技术的出现, 影响着教师的教学方式和学生的学习方式, 深刻地影响着教学内容的实施。信息技术应用到马克思基本原理概论课程中, 为教师施展才能创造了有利的条件, 也是现代教育发展的趋势和需要。马克思基本原理概论课程的教师, 要以信息技术为媒介, 构筑马克思基本原理概论课程新课堂, 充分发挥信息技术优势, 努力提高教学质量。
参考文献
[1]黄甫全.现代课程与教学论[M].高等教育出版社, 2004.
[2]周兴华.运用多媒体教学, 增强思想品德课堂活力[J].教育教学论坛, 2010 (5) .
[3]顾尧.浅析“三原则四步骤五环节”教学模式——以法学教学为例[J].学理论, 2009 (6) .
[4]黄静萍.信息技术与《模拟电子线路》教学整合[J].职业技术, 2010 (2) .
[5]李鑫.信息技术在教育教学中如何发挥作用[J].中国教育技术装备, 2012 (19) .
[6]赵萍萍, 张进良.国内信息技术与课程整合研究述评[J].数字教育, 2017 (3) .
【安徽师范大学《编译原理实践》课程教学大纲】推荐阅读:
安徽师范大学选课系统10-10
安徽师范大学图书馆08-04
安徽师范大学文学院07-24
安徽师范大学研究生院08-24
安徽师范大学迎新生发言稿08-01
安徽合肥师范学院是几本08-26
安徽省高等学校师范生07-18
师范院校学生暑假教学社会实践报告11-05
安徽省有什么本科师范大学广东05-20
安徽师范大学附属幼儿园公共服务指南11-17