APP下载

基于高互动课堂的编译原理课程教学改革与实践探索

2024-11-29林梓钘周坤晓肖捷徐钦桂

电脑知识与技术 2024年27期

摘要:文章针对高等教育课堂中学生积极性不高,以及开展编译原理教学时遇到的一些普遍性问题,进行了一些教学改革尝试,包括:开发弹幕系统激发学生交流欲望,营造宽松课堂氛围;利用看似课堂无关内容吸引学生兴趣;重构教学内容,为每个重要知识点设计一条由浅入深的教学路径;利用特效突出教学重点,减少学生记忆负担等。实践表明,上述手段可以有效提高学生上课的积极性与吸收效率。

关键词:教学改革;编译原理;课堂注意力;知识重构;弹幕

中图分类号:G642 文献标识码:A

文章编号:1009-3044(2024)27-0001-03

0 引言

编译原理(以下简称本课程)是一门为人与计算机的沟通架设桥梁的学科,其基本目标是设计并实现能将简单高级语言源程序翻译成特定底层机器指令序列的翻译器。作为程序设计基础课程的重要后继课程,它使学生深入了解计算机程序的生成原理,进而更好地理解计算机运作原理。同时,作为计算理论等核心课程的先修课,它具有承上启下的重要作用,应当受到更多重视。然而,由于课程内容抽象以及编译技术的成熟,学生对本课程的重视程度逐年下降。不但经常有学生咨询课程通过率,甚至学术界也在探讨开设本课程的必要性[1]。

而根据笔者的亲身经历,除了编译原理外,大部分的理科课堂也都较为沉闷,其中一个重要表现是学生与教师的交互少,教师普遍只能通过点名提问的方法进行低效的互动。学生即便有不理解的内容也无法反馈,影响了后续内容的理解,进而造成课堂整体效率低下。尽管目前已有众多新颖的教学模式,如加拿大的BOPPPS教学模式[2]、加涅九段教学模式[3]等。但在以本课程为例的知识密集型课程中,并没有应用上述模式的条件,也无法让学生主动开口。

本文提出两方面的改善办法:通过弹幕系统以及教师自身的语言技巧提高师生互动率,从而提高课堂效率;重构课程内容,让学生从抽象的课程内容中找到兴趣与方向感。

1) 学情分析:根据人才培养计划,本课程分别为大三下学期软件工程专业以及大二下学期的网络空间安全专业的学生开设,学生理应普遍完成离散数学、程序设计基础、计算机组成原理、操作系统等先导课程的修读。然而实际上学生的基础相当不扎实。比如,学生在大一上学期同时修读离散数学、程序设计基础,根本没有对有向图进行编程,因此缺乏对算法的深入理解,到本课程开课之时,已基本遗忘该知识。

学情的另一个特点是,课堂师生互动率逐年下降。学生中的绝大部分对老师的提问不愿有表达的欲望,甚至害怕被点名提问。部分相对积极的学生会用较小的音量进行回答,但在被教师鼓励大声重复答案时又因胆小而陷入沉默。只有极少数性格非常外向的同学会与老师进行积极互动。

2) 课程知识体系:针对本校学生的具体情况,笔者为本课程的知识体系简化如下:(1) 基于数学原理定义高级编程语言的语法;(2) 通过词法分析识别源代码的单词序列;(3) 通过语法分析重建单词序列对应的语法树;(4) 通过计算语法树语义实现上下文相关功能与中间代码生成;(5) 目标代码生成与优化。

其中,模块1至关重要,不但要讲清楚编译器的来龙去脉,介绍程序设计语言所使用的正则文法(用于构词)与上下文无关(用于造句)的基本概念,更要吸引学生兴趣,是本课程顺利开展的压舱石。模块2是利用有限自动状态机对正则文法进行具体实现词法分析。模块3是通过各种语法分析方法把一维符号串恢复成语法树。模块4通过为语义符号增加继承或综合属性与计算语义,从而实现类型检查、上下文语法检查功能,以及基于三地址码的中间代码生成。模块5则完成对目标代码的生成与优化。

1 因地制宜的教学理念与目标

基于上述学情,笔者对本课程订立的教学理念主要包括以下四点:

1) 旁征博引,触类旁通。为确保学习效果,不仅回顾已学知识点,还扩展相关的课外知识,以拓宽学生视野。比如,在介绍自动状态机时,除了涉及有向图中的基本概念和求解闭包的算法外,还引入了“生命游戏”的概念。在介绍语言集合的描述方法时,可以引入康托尔的对角线证明法等知识点。

2) 穿针引线,明确线索。由于编译技术的复杂性,教材呈现的知识点对初学者比较繁杂。教师应对知识点进行重新串联,绘制知识地图,让学生明确课程目标是什么,学到的技能解决了什么问题,接下来要解决什么问题。

3) 广开言路,积极互动。教师应在课堂中营造轻松有序的教学氛围,让学生自然地参与互动。其中,让胆大的学生可以直接开口接上老师的提问,而让相对放不开的学生利用工具与教师交流。此外在授课过程中,引入一些“教学无关”的内容吸引学生注意力,再通过巧妙的收尾回归课堂,从而加强印象。

4) 聚焦实际,启发思维。考虑到目前信息行业的特点,即便是软件工程专业的学生,参与实用编译器开发的可能性较小。因此,应让学生着重学习相关理论或技巧的泛化应用,而不是具体的编译器开发。本课程中较为经典的思维方法包括:抽象、自动化、递归、问题分解以及权衡[4]。因此应教导学生通过学习正则表达式提高日常文档的处理效率;或是通过分层、分步骤的分治法,把抽象的大问题逐步解决。

基于上述教学理念,形成适合本校学生的教学目标如下:

1) 知识目标:能复述编译器五大模块的核心原理;

2) 能力目标:能通过手动或自动化工具实现针对特定命令语言与机器码的编译器;

3) 素质目标:能把本课程中的思维方法应用在其他领域,如日常办公与学习等。

2 面向高互动的教学方法创新

2.1 弹幕辅助教学系统

为了使学生充分参与课堂,笔者与学生合作开发了一款弹幕系统。该系统的开发理念包括:1) 保护学生隐私。发言默认匿名,后台无法直接查到发言学生的信息,只在必要时候根据网卡物理地址进行取证。2) 降低使用门槛。一方面,弹幕聊天软件基于Web构建,学生只要扫码或输入特定网址即可参与。另一方面,该软件可运行于任意单机中,与借用弹幕网站资源的方式相比,延迟与使用成本均大幅降低。3) 提供复盘功能。软件支持对历史弹幕进行记录,方便通过数据挖掘找出课程中的闪光点与沉闷点,从而在后续课程中改进。

2.2 营造宽松课堂氛围

尽管实践证明,弹幕系统有效提高了学生参与课堂的积极性,但其副作用也同样明显:如果学生只顾着发弹幕,可能会错过知识点;如果大部分人认真听课,弹幕就会偏少,交流又会变少。因此,师生面对面交流仍应是主要的沟通方式。实践表明,学生普遍反感老师点名提问,而对于老师采用全场式的提问则心理负担较小但参与感偏弱。因此,笔者首先在日常教学中营造允许出错的氛围,在高抬头率的基础上通过全场提问结合眼神交流,鼓励学生给出自己的独到见解。如果学生回答错误,则先不给出结果,而是顺着其思路推出明显有问题的结论,进而传授归谬法的思考方法。

3 基于学生兴趣的教学内容创新

3.1 利用看似无关事例启发兴趣

为了有效提升课堂效果,除了运用语言技巧,还需要形式多样的内容进行补充。当讲授的概念偏向抽象,(以台下出现打哈欠作为标志),此时就需要化抽象为具象。通过引入一些看似与课堂无关的生活案例,可以有效为学生起到放松思维的效果,并增加课堂的趣味性[5]。比如在语言和语法一节中,为了强调用有限语法规则描述句子集合的必要性,本文对自身家居智能化改造经历进行了介绍。首先,通过视频介绍基于苹果语音助手Siri的自定义命令功能,其中使用了语音遥控开关厕所灯与排气扇的例子吸引学生兴趣。随后通过“自定义命令太多”的问题,引导学生思考如何解决,再到提出一套统一的指令语法,从而引出用有穷刻画无穷的概念。又比如在讲解“正则文法产生式必须具有递归终点”时,可通过引出“不使用运动型多用途车(也称为SUV) 作为主婚车是因为‘有头没尾’的不祥寓意”,把重要知识点以轻微偏离课堂内容的形式让学生记住。

3.2 构建层层递进的知识联结

知识的联结可分为课内联结与课间联结。其中课内联结的目标是让学生串联知识点;而课间联结的目标则是打通不同课程的隔阂,让学生对知识进行泛化。

1) 课内联结。以词法分析一节为例,该节涉及的概念主要包括:正则文法、正则式、有限状态自动机。在目前流行的众多教材中,大部分只介绍了三个概念及其等价性,但没有说明f44d07fe2d4f95c37878b63ee3c3bcc0其逻辑联系与这些概念存在的必要性。首先通过引导让学生发现正规语言使用成本高的问题,引出正规式概念;在分析如何对正则式定义的符号串进行识别的过程中,用最基本的手段构建相关的处理程序,通过“抽象”对该程序进行逻辑层面的化简,从而引出有限状态自动机就是有向图应用的结论。最终为学生阐明了人类脑中的抽象概念通过正则文法表示,为方便表述转化成正则式,为了实现则进一步转化为有限状态自动机,最终完成从理论到落地的转化。

正则文法和词法分析的关系是本节的另一大重点。为此,笔者首先引导学生用基础方法识别五类基本单词,随后通过合而治之,并从中归纳出正则文法的性质。比如,对关键字、运算符、界限符这三类单词,由于长度与数量均确定,因此可以通过字符串匹配的方式轻易识别。对于标识符与常量,这两类长度与数量均不确定的单词,则只能通过正则文法进行识别。但如果分别采用五种方法轮询判定单词类型,则处理效率较低。通过文法一节中组合两个语言集合得到新文法的思路,引导学生得出"上述任意几类单词的组合依然可以用正则文法描述"的基本结论,再过渡到"正规语言的并集或乘积运算还是正规语言,因此可以用一个正规文法描述五种单词类型"的结论。

2) 课间联结。以LR分析模型为例,其模型如图 1(a)所示:总控程序在输入的激励下,通过查询Action 表与Goto表决定内部状态的变化及输出;而当从LR 几种不同的分析方法切换时,只需替换这两个表格中的内容即可,而无需对总控程序进行修改。而在笔者对同一批学生教授《系统安全》中引用验证监控器的概念(如图 1(b)所示)时,会再次把这个概念引出作对比,通过抽象向学生证明这两个同属于一类设计模式。这样做除了让学生加深对相关概念的印象与联结,还激发了让他们对学习高效设计模式的兴趣。

3.3 删繁就简,突出重点

理科知识可能页面容量有限造成信息过载的问题,进而降低学生吸收效率[6]。比如课本为了追求叙述上的严谨,往往会罗列很多前提条件或边界条件。如果在PPT上照搬这些内容,基础相对较弱的学生可能难以抓住重点。因此在制作课件时应充分利用排版,字体特效,动画等技术突出重点。

以短语概念一节为例,优化前后的PPT如图 2(a) 所示。如图 2(b)所示,除了常见的加粗、标红等强调手法外,还通过直接删除或用灰色字体省略不太重要的信息以减轻听众的注意力负担。

词法分析中正规式与正规文法的相互转换也可以采用类似方法。笔者首先展示正规文法到正规式的三条基本转换规则,如图 3(a)所示。随后再展示一种课本列举的正规式到正规文法的转换方法,如图 3(b)所示。最后通过动画用精简的三条规则替代原来中间的冗长部分,向学生讲解如何“把书读薄”,如图 3(c)所示。据学生的现场反应,这些特效确实对他们产生了深刻印象。

4 小结

本文针对高等学校课堂中学生不积极参与课堂的问题,特别是编译原理课堂中遇到的教学实践问题,提出:1) 利用弹幕系统广开言路;2) 营造宽松课堂氛围;3) 利用看似无关内容吸引学生注意;4) 构建层层递进的课间、课内知识联结;5) 利用多媒体特效减轻学生注意力负担。据笔者实践,上述优化实施后,学生参与课堂的积极性显著提高,对课程的理解也有明显加深。

参考文献:

[1] 何炎祥,伍春香.计算机专业不需要开设编译原理课程吗?[J].计算机教育,2009(4):61-62,85.

[2] 曹丹平,印兴耀.加拿大BOPPPS教学模式及其对高等教育改革的启示[J].实验室研究与探索,2016,35(2):196-200,249.

[3] 范官军.基于“九段教学程序” 的教学设计实践研究[J].中国教育技术装备,2010(33):64-65.

[4] 王挺,李梦君,周会平.对编译原理课程教学中计算思维培养的探讨[J].计算机教育,2009(21):11-13.

[5] 吴玉莉. 此处无关胜有关:初中英语阅读有效提问教学策略分析[J]. 作文成功之路: 小学, 2017(1):49-49.

[6] 李露露. 多媒体辅助教学中信息过载问题研究[D].开封:河南大学,2020.

【通联编辑:王 力】

基金项目:东莞理工学院2021 年高等教育教学改革项目“面向高互动课堂的理科课堂改革实践研究”(项目编号:202102042) ;国家青年基金2021 年资助项目“面向矢量图形版权认证的可逆水印算法研究”(项目编号:62102085) ;东莞市科技特派员项目“面向大型企业的网络安全研究”(项目编号:20221800500772)