孟文文 张新 程知
关键词: 编译原理; 学习通; 智慧课堂; 线上教学; 线下教学
0 引言
随着物联网和大数据等信息化技术的发展和普及,高校教育的教学信息化得到了飞速发展[1]。线上线下相融合的智慧化教学方式正在逐渐取代传统的线下课堂教学方式,微课和翻转课堂等新型教学手段在教学过程中屡见不鲜[2],可以更好地激发学生自学和主动探究的能力,进而提高教学质量,达到培养学生学习能力的目的[3]。
编译技术与计算机专业相关的工作密切相关,通过对编译技术的学习,可以深入地理解编译原理和日常开发工作中使用的开发语言的关系,理解程序是如何被计算机识别并执行的,有助于培养学生解决复杂工程问题的能力,在技术道路上可以走得更远。
1 编译原理课程概述
编译原理课程是合肥学院人工智能与大数据学院计算机科学与技术专业学生的一门重要专业课程,该课程同时具备很强的理论性和实践性。通过对该课程的学习,让学生在掌握编译器构造原理和设计方法的同时,可以提高对计算机系统的整体认知,培养其对计算机复杂工程问题的解决能力[4]。课程从形式语言理论的角度进一步认识与理解程序设计语言及其与编译程序的联系[5],提高学生的逻辑推理能力和抽象思维能力。具体来讲,通过对该课程的学习,学生应达到如下三个具体目标:
1) 要求学生理解编译软件系统的基本科学问题,掌握编译程序的基础理论和基本方法,培养可以利用形式化方法描述语言对编译软件系统进行分析描述、模块划分并建立模型的能力。
2) 要求学生掌握LL(1)、LR、递归子程序等典型方法,进一步强化学生形式化描述、算法分析、功能模块化等专业意识,培养其运用合理方法和技术完成复杂软件系统设计与实现的能力。
3) 要求学生掌握在系统设计与实现过程中,具备对多种方法、工具、环境的比较、评价和选择的能力,例如选择实现词法分析和语法分析方法、实现途径、开发语言和环境等。
2 编译原理课程教学现状
编译原理课程要求学生掌握编译程序构造的基本原理、设计方法和实现技術,具有设计、实现、分析和维护编译程序等方面的基本技能。编译原理课程主要包括理论教学和实验教学两部分,从学生的教学反馈与实际教学效果来看,学生对于该课程的知识掌握情况较差,具体原因有以下三个方面:
1)编译原理课程的先修课程包括程序设计语言、数据结构与算法、计算机组成原理、操作系统等诸多专业核心课程。学生对于上述先修课程的掌握程度会直接影响学生对该门课程的理解程度。计算机科学与技术专业开设编译原理课程的时间是大三的第二学期,此时学生的学业情况已经基本稳定,如果对专业核心课程知识掌握不够牢固,在编译原理课程的学习中会遇到很大的挑战。
2)编译原理课程的相关理论知识涉及面广,而且抽象复杂不容易理解。学生对知识的理解很容易停留在表面,无法理解计算机系统运行背后的工作原理,很难做到将系统知识有机整合[6]。课程以程序设计语言为背景,系统地讲授编译程序构造的基本概念与设计,包括语言与文法、词法分析、自顶向下语法分析、自下向上语法分析等部分。根据教学计划安排,编译原理课程包括28个理论学时和14个实验学时。
3)课程具备很强的理论性和实践性,为了让学生能够更好地掌握编译理论和编译程序构造的基本方法,课程包括三个设计性实验,分别为词法分析器的设计与实现、LL(1)语法分析器的设计与实现和LR(0) 语法分析器的设计与实现。如果学生不能真正理解和掌握本课程所学的专业理论知识,实验环节的教学质量无法得到保证。
3 编译原理课程教学实践探析
基于上述分析的合肥学院人工智能与大数据学院计算机科学与技术专业的编译原理课程教学现状,课程组在智慧课堂教学方面开展工作,在教学各个环节进行了充分的探讨和改进。借助超星学习通软件完成计算机科学与技术专业编译原理课程的教学,从以下几个方面开展工作。
3.1 利用智慧课堂优化教学管理工作[7]
1) 预习阶段。教师首先会在平台上建立编译原理课程的相关信息,关联上课班级的学生信息,然后上传下节课的学习资料并发放任务,最后教师通过查看学生的学习进度和反馈的疑问及时调整授课重点,做到学生带着问题进课堂。
2) 上课阶段。利用学习通平台进行签到(签到方式有位置签到、签到码签到、拍照签到等)、选人提问(有随机选人、指定学生等方式)、小组讨论(可以进行自由组队或者指定人员)等方式有效激活课堂。此外,教师可以在课前指定人员进行组队,上课阶段采用翻转课堂的方式,随机选学生进行上台讲解,教师进行点评与总结,做到学生带着答案出课堂。
3) 复习阶段。教师在学习通平台发布课后作业,检验学生在上课阶段的知识掌握情况。通过作业批改和查看成绩统计分析,可以及时跟进学生的学习情况,进而调整下节课的授课重点,形成教学环节的闭环。学习通平台上建立的编译原理课程作业库,覆盖了由易到难的各种知识题型。
3.2 利用智慧课堂优化过程考核方案[4]
编译原理课程考核包括期终考试(笔试)、过程考核、实验考核和平时作业。其中过程考核是检测学生在教学期间对知识掌握情况的重要手段,根据过程考核成绩的统计情况,教师可以及时调整授课重点。例如在2020级计算机科学与技术专业编译原理课程教学期间,教学进度进行到接近三分之二时,安排了一次过程考核,成绩统计如图1所示。
从上述过程考核的成绩统计结果来看,学生对知识的掌握不是很理想,主要原因有两个。一是为了督促学生学习而适当提升过程考核题目的难度;二是前面课程内容涉及理论知识较多,学生掌握理论知识不够深入。后续通过重难点学习并结合实验部分对理论知识进行巩固。
过程考核的实施主要包括以下几个方面:
1) 题目的筛选。借助学习通平台,教师从题库中筛选能够支撑课程目标的知识点的题目。合肥学院人工智能与大数据学院的编译原理课程的题库每年都会由课程组的教师反复揣摩后更新。
2) 试卷的下发。借助学习通平台在发放试卷时将题目顺序及选项顺序等随机打乱,可以有效防止作弊的发生。考试设置如图2所示。
3) 后台的监考。借助学习通平台可以监测学生考试过程中的作答情况,当在考试过程中出现学生无故退出考试界面时,教师可以进行自动收卷,停止学生继续答题。
4) 试卷的批改。借助学习通平台可以实现客观题目的自动批改。试卷批改完毕,可以一键导出各个题目各个知识点的答题情况,教师通过查看统计分析,快速了解学生的知识掌握情况。
3.3 利用智慧课堂优化实验教学
编译原理课程的实验教学包括教师授课和学生自主学习两部分。借助学习通平台发布实验预习资料并发起小组讨论,课上安排学生进行具体实践。实验考核由学生答辩和提交实验报告两个环节构成,二者各占50%的考核权重。
教师在答辩环节通过问答和演示的形式考核学生对实验内容的完成程度和理解掌握程度。以2020 级计算机科学与技术专业编译原理课程的词法分析器设计与实现的实验答辩考核为例,简要阐述学生通过实验环节需要掌握的内容。
1)考核学生对基础知识的理解和掌握,要求学生清楚地知道词法分析器是以源程序作为输入,能够按照构词规则分解成一系列单词符号。
2)考核学生的算法分析和设计。单词符号是语言中的最小單位(包括关键字、标识符号、运算符、界符和常量等),要求学生能够根据单词符号的种类编码实现算法设计并给出算法流程图。
3)考核学生的程序设计与实现。要求学生的程序在执行时可以得到预期的运行结果,输入一段正确的源程序时,需要输出正确的二元式执行结果;输入一段存在漏洞的源程序时,需要输出合理的错误提示并能够分析原因。
在实验报告环节,教师通过实验报告成绩评价表,进一步考核学生对实验内容的完成程度和理解掌握程度。合肥学院人工智能与大数据学院的实验报告成绩评价表如表1所示。
4 智慧课堂教学效果
以合肥学院人工智能与大数据学院2019 级和2020级计算机科学与技术专业的两个班级为例,教学过程中采取线上线下相融合的教学方式,对编译原理课程采用智慧课堂教学,两个班级的考核结果如表2 所示。
通过表2中的结果可以看出,采用智慧课堂教学方式之后,学生的考核成绩分布符合教学预期,可以达到较好的教学效果。同时从学生的评教结果反馈得知,很大程度地提高了学生的学习能动性,对编译原理课程的抵触心理明显减退。
在2019级计算机科学与技术专业的编译原理课程教学过程中,仅对理论教学部分开展了智慧课堂教学实践。经过课程组的分析与讨论,接下来在2020级计算机科学与技术专业编译原理的实验教学过程中开展了实践与探索。将2019级和2020级计算机科学与技术的两个班级的实验考核成绩进行对比,结果如表3所示。
从表3中的结果可以看出,相比于2019级同专业的学生,由于对2020级计算机科学与技术专业的编译原理课程的实验环节实施了智慧课堂教学,后者的考核成绩得到明显提升。同时在实验教学过程中重点强化学生实验考核中的答辩环节,使学生能够加深对知识的理解。
5 总结
以合肥学院人工智能与大数据学院计算机科学与技术专业的编译原理课程为例进行了智慧课堂教学的分析。借助学习通平台,充分利用信息化手段,打破教师和学生之间的沟通屏障,使得师生之间的沟通更加立体化。做到以教学成果为导向,教师真正做到因材施教,提升教学质量。
立足合肥学院编译原理课程教学现状,借助信息化技术的发展进行智慧课堂的教学,培养以学生为主体的教育核心理念。通过智慧课堂教学上的不断实践与探索,从形式语言理论的角度,让学生进一步认识与理解程序设计语言及其与编译程序的联系,提高了学生的逻辑推理能力和抽象思维能力,提升了编译原理课程的教学质量。