编译原理课程的研究性教学:编译原理第四版pdf下载

  摘要:针对编译原理课程的教学现状,引入研究性教学模式,以“问题”为中心,以“学习”为目标,重新设计课堂教学、实践教学和教学评价环节,强调学生的主体性和教师的主导性,在提高教学质量的同时,培养学生的创新能力。
  关键词:教学改革;研究性教学;编译原理
  一直以来,编译原理作为计算机相关专业的专业基础课程是一门学生认为最难学、教师认为最难讲的课程。然而,传统的授受式教学模式在教学中存在一定的弊端,主要表现在固化教师教学内容、降低学生学习积极性、压制学生创新能力等。传统教学模式已不能满足大学生深入学习和理解编译原理的要求。为了解决这一问题,一种新型的教学模式,即研究性教学,被提出。文章根据编译原理的教学现状,对课堂教学、实践教学以及教学评价进行研究性教学改革,旨在提高教学质量,培养创新型人才。
  1、编译原理的教学现状
  近50年来,编译原理一直是计算机相关专业的重点教学内容。然而,在其教学过程中经常存在以下问题。
  首先,编译原理具有较强的抽象性、理论性和逻辑性,学生理解起来相对困难。同时该课程与其他课程有较大的交叉性,学生必须预先学习计算机组成原理、高级语言程序设计、数据结构、操作系统等课程,并且最好拥有算法设计与分析、离散数学等方面的基本知识。因此,在学习编译原理之前,学生要拥有比较扎实的专业基础。
  其次,学生们普遍认为编译原理的学习过程枯燥乏味,知识点多且较难理解。甚至存在一些学生认为编译原理没有应用前景,不如学习编程语言(如c++)实用。随着学习时间的推移,学生容易失去学习的兴趣和信心。
  再者,教师采用传统的授受式教学模式,重视课堂理论教学,习惯性地将书本内容强制灌输给学生,而学生则使用强制记忆法被动地接受知识。教学过程忽视实践应用环节,导致理论与实践相脱离。这种教学模式降低了学生的学习兴趣,削弱了学生的思考能力,压制了学生的创新意识。
  为了解决以上问题,教学模式亟待改革。2005年,教育部制定了教高[2005]001号文件,该文件明确地指出高等学校本科教学工作需要“积极推动研究性教学,提高大学生的创新能力”。并且,现有高等院校也有较充足的资源和环境(如图书馆和实验室)来开展研究性教学。因此,我们有必要也有能力在教学中引入研究性教学模式。近几年,我们便对编译原理课程进行了研究性教学的尝试和探索。
  2、研究性教学的内涵
  研究性教学以“问题”为中心,以“学习”为目标,坚持授人以渔的原则,引导学生,启发学生,是一种让学生通过“研究”的方式从事学习活动的教学方法。在传统的授受型教学模式下,教师占有知识的霸权地位,学生只能被动地接受知识;而研究性教学调整了教师和学生在教学活动中的角色,在维持教师主导地位的同时,强调学生的主体地位。从教师方面,教师在教学过程中担任设计者、引导者、启发者和管理者的角色;从学生方面,学生在学习过程中担任问题发现者、研究者、解决者和创新者的角色。在教师的指导下,学生通过搜索资料对相关问题进行探索,在研究和解决问题的过程中,吸收知识、应用知识、解决问题并获取新颖的经验,培养主动探索、主动思考和主动实践的能力。
  在长期的教学活动和教学改革中,存在着3种常见的研究性教学模式。
  (1)问题解决模式。该模式是在教师的组织下,学生通过问题进行学习,再通过学习来解决问题。
  (2)自主探究模式。该模式是让学生模拟科学家从事科研过程的方式,教师不直接参与其中,只在必要时给予学生一定的指导。
  (3)课题参与模式。该模式采用教师带领学生直接参与教师的实际研究性课题的方式。
  在这3种教学模式中,问题解决模式适合课内教学,自主探究模式和课题参与模式适合课外教学。
  3、研究性教学的实施
  编译原理课程的教学内容涉及大量的理论知识,这些知识比较抽象且逻辑复杂,如形式语言理论、正规式、有限自动机理论、上下文无关文法、自下而上分析、自上而下分析、属性文法和语法制导翻译等。大量的概念、算法和符号很容易使学生对学习产生恐惧心理,而且大量的理论知识与有限的教学时间之间存在冲突,使教师很难将所有内容都详细展开、深入讲解。最终导致学生在学完整门课程之后,只表面了解,而不知道各知识点之间的关系以及各知识点在编译器中的作用。为了解决上述问题,我们在课堂教学、实践教学和教学评价上分别对编译原理课程进行研究性教学改革。
  3.1 课堂教学
  在教学过程中,理论教学是学习的基础。本节从教学内容和教学过程两方面对课堂教学重新设计。
  在教学内容方面,教师针对学生情况优化和调整教学内容。在学期开始、学期1/3和学期2/3这3个时间点上,教师深入学生内部,通过聊天、调查问卷等方式,了解学生的学习现状。调查内容主要有学生的学习基础、对授课内容的期望以及现在的学习态度。然后针对调查结果,在保证课程内容系统性的基础上,教师根据学生情况精简或添加授课内容。例如,对于先修课程,如果编译原理中存在某个知识点涉及其他相关课程,教师可以提前一周发布相关课程名称及在该课程中对应的知识点,保证在这部分基础薄弱的学生得以复习。对于学生要求新添加的内容,教师可以抽出一段时间来做相关讲座以充实教学内容。对于编译原理的新课程,如果学生对此部分内容比较熟悉,如高级语言的一般特性,教师可以列出提纲,以作业的形式鼓励和引导学生在课外进行归纳总结;如果是重点和难点内容,如词法分析阶段中的有限自动机理论,教师则需展开并深入讲解,讲解时应避免概念式宣讲,尽可能采取问题启发的方式引导学生带着问题听课,调动学习积极性。
  在教学过程方面,我们要避免教师唱“独角戏”,强调学生的参与性。不同于以往考查学生记忆率的提问回答的方式,学生参与教学过程是在教师设置好的问题场景下,随着教师的引导,思考问题、探讨问题、解决问题,并最终达到真正学习的目的。例如,在学习词法分析器中的有限自动机(包括不确定有限自动机NFA和确定有限自动机DFA)时,教师并不直接去枯燥地讲解理论和方法,而是给出问题场景,通过探讨型的方式教学。教师首先让学生思考在词法分析阶段,根据已经学习的知识(如正规式)能否实现词法分析器,进而引出学习有限自动机的必要性,并对两种有限自动机NFA和DFA展开讲解。在讲解的同时,请学生思考NFA和DFA的区别和联系,以及各自的优点和缺点。在讲解结束后,再请学生根据NFA和DFA的各自特点,思考两者分别有哪些应用场景。对于比较困难的问题,教师可以给予必要的引导,如最后一个问题,教师可以给出多个场景,让学生进行选择。后期学生会发现这些应用场景的实现,本质上就是实现了一个词法分析器。在这种由问题引导的教学方式中,学生很容易感受到各个知识点的环环相扣。某个知识点的不足,将引出一个新的知识点,而新知识点对以往缺陷的解决过程会使学生的自信心与自豪感大大增强。而当再发现新知识点也存在缺点时,学生将有很大的勇气和动力去解决它。   3.2 实践教学
  为了深入理解编译原理,实践过程是非常关键的。本节从实践内容和实践管理两方面对实践教学进行安排。
  在实践内容方面,采用两种实践方式。方式一为基础实践,实践过程与理论教学同步,是对基本理论的实现练习;方式二为综合实践,每次的实践内容是编译器的一个模块,当所有作业完成后,能基本上形成-_个小的编译器。方式一的实践内容相对简单,能加深学生对理论的认识,但不能突出各知识点间的关系;方式二能较清晰地表达各知识点间的关系,但作业难度较大,学生不易完成。我们引入研究性教学,将这两种方式结合,实现优缺互补。在安排实践内容时,基础实践主要包括单词符号统计的编程实现、有限自动机的编程实现、LEX的使用、LL(1)分析的编程实现、LR分析的编程实现(主要是LR(O)、SLR和LR(1))、YACC的使用和属性文法的传值实现,学生需将所有基础实验全部完成。综合实践包括可编程计算器的实现、文本编辑器的实现和语言结构化编辑器的实现,学生可以从3个综合实验中任选其一。
  在实践管理方面,我们采用小组分组、组长负责制。10人一组,自荐组长。为了避免以往“一人种树,众人乘凉”的现象,“加强”作业力度,将一组一份作业的要求转化为一人一份作业的要求;“降低”作业难度,转变组长“种树”的角色为“助教”的角色来帮助组员完成作业。此时对组长的要求较高,不仅需要提前完成作业,更需要拥有较强的专业基础、组织能力、表达能力以及教学责任心,而教师也需提前对组长进行专业培训,使组长满足“助教”的专业水平。实践作业的考核环节采取组长打分和答辩打分两种。对于基础实践,由组长根据组员对本次作业的实践情况,给出0~5分(0-没写、1-不及格、2-及格、3-中、4-良、5-优),并备注出其不足之处。对于综合实践,在课程临近结束时,对最终完成的小编译器进行考核,首先组长对每个组员的编译器给出O~50分(0-没写、1~10-不及格、11~20-及格、21~30-中、31~40-良、41~50-优);然后教师对其进行答辩考核,随机从每个小组中选择一位学生代表整组演示项目,每人10分钟(学生演示6分钟,教师和学生提问4分钟),并给出0~50分作为小组每位成员的答辩成绩。在考核环节中,特别是对综合实践的考核,因为单个学生的答辩成绩将代表整组组员的成绩,所以任何组员都不敢轻视实践过程,各个小组成员相互监督、相互督促、相互切磋、共同成长。每次的实践成绩要向学生公布,接受学生质疑,创造良性竞争的学习环境。
  3.3 教学评价
  研究性教学在评价时注重考虑过程取向、实践取向和合作取向。本着公正、公开的原则,将成绩构成多元化,采用“阶段考核+期末考核+实践考核”结合的方式。阶段考核安排在学期1/3、学期2/3这两个时间点上(在调查学生情况的两个时间点之前),考核方式为网络题库闭卷考试,题型为单选题、多选题、判断题和填空题,主要考查学生对基本概念和理论的理解,每次阶段考核占总成绩的20%。期末考核安排在学期末,考试方式为“网络题库闭卷考试+笔试闭卷考试”,题库题型与阶段考试相同,笔试题型为综合题,主要考查学生对理论的综合运用,占总成绩的30%。实践考核由小组组长和教师综合打分,考核学生的动手能力及团队沟通能力,占总成绩的30%。多种考核方式比单一考核方式更能准确地反映学生掌握知识的程度。由于多次考试的刺激,学生在学习过程中保持高度的危机感,积极参与教学活动,在扎好学习基础的情况下,稳步发展创新精神。
  4、结语
  研究性教学改革主要针对编译原理课程的课堂教学、实践教学和教学评价3个方面进行,这对其他课程的教学实践也具有借鉴意义。由于现在正处在改革初期,在取得了一定的教学成果的同时,在教学过程中也存在一些值得注意的地方。在教学资源方面,虽然很多学校已经投入大量资金建设图书馆和实验室,但与国际名校相比,教学资源仍显不足;就教师素质而言,我们需要更专业、更有水平的教师,这不仅体现在教学能力上,也体现在广泛的知识面、丰富的生活阅历及组织能力上。总之,在教学中进行研究性教学改革,我们仍需不断探索,以提高教学水平,培养有创新意识的综合型人才