引入PBL和SPOC混合教学的《编译原理》课程改革
2021-03-24牛秋月唐国良
牛秋月,唐国良
(河南中医药大学信息技术学院,郑州450046)
针对《编译原理》课程内容抽象,知识点多且分散,课时少等教学实际,分析当前《编译原理》课程的教学现状和学生特点,树立“以学生为主体,以问题为导向”的教学理念,引入SPOC和PBL,整合线上线下资源,开展混合模式教学,激发学生学习兴趣,提高教学效果。
编译原理;PBL;SPOC;混合模式教学
0 引言
《编译原理》是本科计算机专业必修的一门专业主干课程,该课程理论性强,复杂算法和知识点较多且抽象,普遍被认为是本科阶段最难学难教的一门专业课[1]。该课程之所以难,从学生角度看,主要表现为内容抽象难以掌握。从教师角度看主要表现在三个方面:一是该课程重难点比较集中,主要在第三四五章节的词法分析与语法分析部分,学生在学习前两章的时候积极性还可以,在三四五章学习时容易出现挫败心理,直接影响到后续章节的学习;二是该课程的理论讲授和实践锻炼两部分之间的衔接不好处理,现阶段理论讲授环节多采用传统的填鸭式灌输教学,学生是被动的接受编译器实现的原理和技术,实验课上让学生自己动手设计时,不知从哪儿着手去写程序;三是知识点多且分散,课时少,仅利用课堂时间很难完成整套编译理论的讲授。
计算机专业是一个重实践的专业,如何使学生在弄懂编译理论的同时,把实践结合起来,提高学生的学习积极性,培养学生的计算思维能力,是当前《编译原理》教学亟待解决的问题[2]。本文针对本校计算机科学与技术专业的培养目标和课程特点,引入SPOC和PBL,开展混合模式教学,经过一个学期的教学方法改革和教学实践,取得了良好的教学效果。
1 教学准备
1.1 PBL案例设置
PBL,是以问题为导向的教学方法,充分体现出“以学生为主体,以问题为导向”的教学原则[3],PBL教学法主要按照“教师设计问题—学生自主学习—分组讨论及发言—教师总结”的教学思路来开展教学,目的是提高学生学习兴趣,促进学生主动地思考和学习。
针对本课程中一些重要且学生不易接受的知识点,采用PBL教学法,以实际问题让学生自行寻找解决问题的方案,激发学生主动学习的本能。
例如在介绍自上而下分析所面临问题时,假定有文法G(S):
(1)S→xAy
(2)A→**|*
分析输入串x*y。
分析过程中,当用一个非终结符A的第一个候选扩展A时,第一个“*”能够匹配成功,但这种匹配是暂时的,当分析指针IP指向下一个符号“y”时,此时分析出错,如图1所示。不得不“回溯”到上一步,采用A的第二个候选去扩展A,分析成功。
图1 自上而下分析过程举例
再例如介绍算法优先分析法中算法的优先顺序时,二义文法G(E):E→i|E+E|E-E|E*E|E/E|(E)为例,分析句子“i+i-i*(i+i)”,会生成以下两种不同的语法树,如图2所示。如果规定算符的优先次序,并按这种规定进行归约,则归约过程是唯一的。
图2 算法优先分析法举例
但是如果提前规定此文法算符之家的优先次序,并按这种规定进行归约,则归约过程是唯一的。
由于本课程知识点抽象知识点较多,不再一一列举其PBL案例。
1.2 选择教学平台与MOOC
结合前两个学期在多个在线教学平台的试用效果,讨论并分析各平台的优势、教学管理功能、网络是否拥堵及学生对各平台的反响等因素,决定采用以课堂派为主,雨课堂、钉钉、腾讯课堂等教学平台为辅[4]。
根据该校开设此课程的专业培养目标及课程内容,选用中国大学MOOC上由国防科技大学王挺教授录制的MOOC视频作为线上同步SPOC教学资源。该MOOC视频在2007年被评为国家精品课程,2016年被评为国家精品资源共享课程。
2 混合式教学设计
混合式课堂教学过程设计如图3所示。
图3 混合式课堂教学过程设计
2.1 课前
在课堂派公告区发布每章节的学习目标、学习内容与作业要求,本章节与前后章节知识点之间的关系,另附上相应章节的MOOC视频学习清单及作业问题。学生在视频学习完成之后,可以提交作业。
2.2 课中
教师根据学生课前自主学习及作业完成情况,通过课堂派直播或线下课堂等方式,进行知识点的串讲和讨论,为了活跃课堂气氛,授课过程中会根据学习内容设置互动抢答或随机提问的形式,督促学生认真上课。
2.3 课后
每章节学习结束后,都会在课堂派上发布一次综合性单元测试,测试习题内容及顺序都是随机打乱的,避免学生相互抄袭。
3 教学方法
由于《编译原理》理论性强,内容抽象,在实施过程中多以讲授为主,针对课堂中不同知识点,根据其难易程度、算法特点等采取不同的教学方法,而非从头到尾采用某种单一的教学方法。本文提出将PBL教学法、类比教学法、图形化、角色翻转等多种教学方法,在一定程度上化繁为简、化抽象为形象,这样不仅可以帮助学生更好理解课程中的知识点,还能够提高学生学习积极性、培养学生主动思考问题解决问题的能力。
3.1 PBL教学法
本课程在理论教学中主要采用PBL教学法,但由于该课程抽象知识点较多,如果在授课过程中每个知识点都设计问题的话,提出的问题会过多,降低授课效率,收不到理想的教学效果。因此,该方法主要用于介绍本课程的重要且较难理解知识点,其他知识点的讲解多采用诸如以下几种教学方法。
3.2 类比法教学法
对本课程中一些十分抽象且不易理解的知识点,拿出一个大家能看见的或较易理解的对象来进行对照学习。例如在讲解编译过程及每个阶段的任务时,类比为自然语言的翻译过程,便于学生理解。自然语言的翻译要经过以下几步:①识别出句子中的一个个单词;②分析句子的语法结构;③根据句子的含义进行初步翻译;④对译文进行修饰;⑤写出最后的译文。这5个步骤刚好和编译过程的词法分析、语法分析、中间代码生成、代码优化、目标代码生成这5个阶段一一对应,如图4所示。
图4 编译过程类比为自然语言翻译
3.3 图形化教学法
利用图形和动画展示抽象算法的实现过程,能够把知识的讲解化静为动,培养和激发学生的学习兴趣。例如在讲解确定有限自动机和非确定有限自动机的区别时,我们借助状态转换图来描述,NFA确定化为DFA时把每一步操作都通过动画在图形里面表示出来,让学生能够直观地看到整个算法的实现过程。
3.4 翻转教学法
课前教师需将相应章节的教学大纲、PPT、教学视频、自测题等教学资源上传到网络教学平台,并要求学生在课前进行自主学习,自学过程中产生的疑问可以在平台上与老师、同学进行交流,或带到课堂上进行探讨。课程教学中,教师首先针对学生在课前自学过程中遇到的问题给出解答。然后教师再根据学生的学习情况设计研讨题目,要求学生在规定时间内分组进行讨论,讨论结束后每组推选出一位代表总结发言。小组代表总结发言时,教师可适当的提出疑问,其他小组的学生也可提出质疑并发表自己的见解。最后,教师针对学生课堂的表现情况做出总结,理清本次课程知识点的脉络,对学生掌握不牢固的知识点,再次布置任务,加深学生对知识的理解[5]。
4 教学实施
本课程基于以上的教学设计,在2019-2020学年第二学期针对本校计算机科学与技术专业学生,开展一学期的线上线下相结合的混合模式教学。经调查统计数据显示,引入PBL和MOOC之后的混合式教学学生期末成绩有了大幅度提高。
近三年学生成绩分布直方图对例如图5所示。
图5 近三年成绩对比
5 结语
针对《编译原理》抽象难懂难学的特点,引入PBL和国家精品MOOC资源,经过精心的教学设计,采用线上线下相结合的混合模式教学,将《编译原理》课程中的知识点及难点与实际的案例有机地、融会贯通的结合起来。经过一学期的试行,证明这种教学模式是可行的、有益的。在以后教学过程中,将继续研究和探索混合式教学模式的教学方法和设计,培养学生的自主学习和创新思维能力、沟通协作能力等,提高教学效果。