周汝雁 韩彦岭 张明华 于庆梅 徐利军
摘要:针对编译原理课程的特点、课程目标定位及普遍存在的问题,提出采用人本主义教学理论和构建主义学习理论作为指导,通过问题导入和兴趣激发的教学方法,在提高学生的积极性、主动性和探究性,发挥学习潜能,学生学习能力和专业能力培养等方面提高教学效果。
关键词:编译原理;教学方法;教育心理学;人本主义教学理论;构建主义学习理论
1、编译原理的课程目标定位及存在问题
编译原理的课程目标定位是让学生掌握和理解编译系统的结构、工作流程以及编译程序各组成部分的设计原理和实现技术,从而掌握分析、设计、实现和维护编译系统的能力。基于该课程目标,编译原理课程的教学方法一般都是以编译器原理和实现技术的讲授为主,以简单算法设计强化对原理的理解;课程实验则是通过编译器分解编程,最终组合完成一个简单的编译器,或扩充一个简单的编译器。编译原理是一门理论深度和实践要求并重的课程。在学习过程中,许多抽象模型、概念和算法学生难以理解,而构造一个完整编译器也具有一定挑战性,学生容易产生畏难心理,再加上感觉自己将来参与编译程序开发工作的可能性不大,学习的兴趣和积极性不高。由于课程学习确实存在一定的难度,一直是计算机专业中公认的难教、难学课程之一。
2、人本主义教学理论指导下,激发学习兴趣,提高学习积极性,发挥学习潜能
人本主义学习理论认为学生都具有学习的愿望和潜能,在好奇心的驱使下,在合适的环境条件下,会自觉吸收有趣和需要的知识,当学生了解到学习内容与自身需要相关时,学习的积极性更容易激发;人本主义理论强调教学的目标在于学会学习和促进学习;认为学生是教学活动的核心,教师的责任是协助学生最大限度地发展自己的潜能,为学生提供学习的手段,而如何学习则应当由学生自己决定,教师扮演的是促进者、帮助者、辅助者、合作者的角色。人本主义的课堂教学模式包括:以题目为中心的课堂讨论模型、开放教室的教学模型、自由学习的教学模型。
在人本主义教学理论指导下,在本课程的第1节课上,通过课堂讨论及网络查找的方式,让学生明确编译原理是怎样一门课程,主要学习哪些知识,需要用到以前学到的哪些知识,编译原理是否只是讲如何编写编译器的课程,除编译器外还有哪些其他应用等。让学生了解编译原理课程以介绍程序设计语言编译程序构造的基本原理和设计方法为教学目标,是一门理论性、实践性、技术性很强的课程,强调理论与实践的紧密结合。引导学生有意识地将以往所学的多门课程的知识应用到本课程中,并让学生了解本课程技术在除编译器之外的多种应用,让学生了解编译技术在计算机软件、数据库、操作系统、网络信息处理、语言和文字处理、人工智能、机器学习、并行处理等领域都有广泛的应用,将编译技术与自己感兴趣的研究领域紧密结合起来,对编译原理课程产生兴趣。
在第一节课后布置编写词法分析器的实验项目,让学生自主选择完成过程,可以在词法分析理论课之前,按3人一组完成实验,能独立完成实验且方法正确的小组可以不再听词法分析的理论课,自由安排上课时间;也可以选择听课,在词法分析授课结束后完成实验。采用此方式后大多数学生都会尝试自主学习完成词法分析器项目,但绝大多数学生会遇到各种问题,而且由于编写词法分析器的方法不止一种,在验收实验和跟学生的探讨过程和问题解答过程中,学生就会觉得还有必要再系统全面地听课,而且听课时非常有目的和针对性,并且能体会和总结出小组和自身在完成实验过程中的能力和存在的问题,因此采用此方法不仅能激发学生学习的积极性、主动性,还能够充分发挥学生自主学习的作用。
为了顾及学生程度差别,降低部分学生自主学习的难度,提高学生学习和实验的兴趣,实验项目题目的设计不仅有难有易、有选择性,并且最好具有启发性和相关性。如在词法分析器(扫描器)设计实验项目中,我们设计了从最简单的正规式r=(a|b)*aa(+1-)1描述语言L(r)的扫描器的构造,到网络信箱地址正确性检查,到文本编辑器的单词正确性检查和重复性检查、XML文档分析等。题目有难有易,有不同领域的应用,学生可以根据程度选择自己感兴趣的题目。
词法分析器相关的原理和技术相对简单,便于学生自主学习,学生便不会在上课之初就产生畏难心理,在后续课程中和构造语法分析器、语义分析器和优化器的实验过程相似,也可以收到很好的课堂教学和实验教学效果。
3、认知理论及构建主义学习原理指导下,“问题”导入,循序渐进,深入理解课程内容
认知理论认为人脑是一个信息加工系统,当人处于清醒状态时,不断地对来自外部环境的刺激信息进行加工处理,认知心理学有关信息加工的观点认为:问题解决在信息加工过程中占有非常重要的作用。认知理论在教育中的应用形成了构建主义学习观,建构主义学习观的提出人布鲁纳认为如果学习者能主动构建自己的理解,学习将更有力度;学习者的认知发展水平或先前的知识对新的学习起到非常重要的作用,教师应当帮助学生将之前的知识和经验与新的更抽象的或符号的知识和经验联系起来。
随着以计算机和网络技术为核心的现代信息技术的发展,随着脑科学有关人的高级认知机制研究成果的呈现,当代教学理论中基于情境认知与情境学习的理论研究和实践模式的开发正受到越来越多研究者的关注和教育工作者的重视。情境学习理论强调学习情境的极端重要性,重视主动探索操作与经验学习,强调学习互动参与和分享,强调学习是学习者从边缘参与到核心参与的文化适应过程。当前常见的情境学习理论的应用形式是基于问题的学习,也被称为抛锚式教学。它强调培养学生解决问题的能力,但更侧重于给学生提供有意义的现实问题,并要求学生以合作探究的方式来共同寻找解决方案。
基于问题的课堂教学方法在教学实施过程中,教师采用以下几个步骤协助学生进行学习:①提出问题;②引导学生了解问题;③组织并协助学生独立学习和小组探讨;④形成个人思想并进行小组交流;⑤教师分析和评估问题,并进行补充讲解。我们通过问题设置和课程的精心设计,让学生明确每节课的学习目标,并通过问题进行课程衔接,让学生循序渐进更好地理解和掌握编译技术的主要理论基础。例如,在讲解通过状态图代码化构造词法分析程序时,先提出如下问题:①正则表达式可以对什么进行描述?②NFA是做什么用的?③用什么方法可以把正则表达式转换成等价的NFA?④DFA与NFA的区别是什么?⑤用什么方法可以将NFA确定化为DFA?⑥为何要最小化DFA?如何最小化?⑦如何将状态图转换为代码?让学生分组学习和讨论,一个小组提问其他组回答的方式进行课堂教学,学生通常能正确地给出简洁概括性的答案,但不能给出具体的解决过程,这样教师再对解决步骤进行详细讲解,学生就会非常准确而且牢固地掌握相关知识。学生在这些问题的解答过程中会自然而然地将以上问题中的正则表达式、NFA、DFA与词法分析程序构造有机联系起来:正则表达式→NFA→DFA→最小化DFA→代码,能够使用正则表达式对程序设计语言词法单元的模式进行描述、用Thompson结构法能将正则表达式转换成等价的NFA、用子集法能将NFA确定化为DFA、将DFA最小化可简化程序代码,从而理解和掌握词法分析程序构造技术和过程。endprint
语法分析需要掌握上下文无关文法及其设计,然后掌握语法分析技术,其中自顶向下的语法分析或自底向上的语法分析方法的划分都较容易理解和接受,自顶向下的语法分析中的手工构造LL(1)分析器的方法中涉及文法约束条件和分析表的构造,比较繁琐,较难理解。我们设计了如下问题引导学生学习:①含有左公因子的文法在编程时会引起什么问题?②含有左递归的文法在编程时会引起什么问题?③怎样的文法是LL(1)文法?④FIRST集和FOLLOW集的作用是什么?如何计算?⑤分析表如何构造?通过对这些题目的探讨和讲解,学生就能够理解构造无回溯的自顶向下的语法分析器,要求文法必须是LL(1)文法;凡是含有左公因子的文法会造成程序的回溯,而含有左递归的文法会造成程序的死循环,通过消除左递归、提取左公因子大部分非LL(1)文法可以改写为LL(1)文法;文法中产生式A→a,在分析表构造中的填写的位置取决于FIRST(a),当FIRST(A)含8时,还取决于FOLLOW(A)。在上述问题的探究和理解过程中,学生会将以上问题有机联系起来形成手工构造LL(1)分析程序的方法和步骤为:消除左递归并提取左公因子、FIRST集和FOLLOW集的构造和LL(1)分析表的构造。
尽管在授课中采用的课堂形式不尽相同,但基于问题的学习过程中,学习和问题的解决都是围绕疑问、案例或方案组织,随着问题的展开和问题解决不断出现进展,可以较好地辅助学生的学习。在语法制导翻译、目标代码生成和优化等课堂教学中采用基于问题的课堂教学方法也取得了很好的教学效果。
在采用问题导入的教学方式时,课堂提出的问题要精心设计,构思巧妙的问题能够激发学生的思考,启发学生的探索和发现,从而获得知识。为了达到最佳教学效果,在问题的提出上注重考虑了以下两点:第一,在设计问题时力求精练适当。所提问题需是重点、难点,能引起疑问和争议,避免太难学生无法解答,也不能太易学生无需思考和探究。第二,设计问题具备有序性、相关性和启发性,由于编译程序的设计是一项大的系统工程,相关技术即便是分解成多个阶段,每一部分内容包含的概念、原理和算法依然比较多,具有多学科聚焦的特点,因此提出的问题要具备有序性、相关性和启发性,不仅能贯穿前后知识点,起到主线的作用,还要通过问题的探究由表象到本质、由已知到未知,让学生掌握相关原理和技术。
4、结语
根据编译原理课程理论性强、抽象性高、逻辑思维严密、算法复杂度大,学生畏难、理解困难的特点,在教学过程中采用人本主义教学理论和认知理论及构建主义学习理论作为指导,在充分激发学生学习兴趣的前提下,通过问题导人的教学方法,结合不同形式的教学实践和实验,让学生自由、积极主动地参与到学习过程中,在更深层次上提升了学生的计算机专业素养。endprint