基于现代信息技术的编译技术课程教学实践与探索

known 发布于 2025-08-25 阅读(314)

摘" 要:针对编译课程任务重、内容难、课时短的现状,基于头哥实践教学平台(EduCoder)提出了“教、学、练”三体合一的线上线下融合编译技术教学教改思路。结合线上线下融合教学的特点,设计了课程内容层次结构,采用实验和理论教学融合并行以及“教、学、练”交叉的教学模式,开发了多层次的通关案例,提出了多维立体评价体系。该教学教改思路已经进行了应用实践,教学质量得到了显著提升。

关键词:编译技术;“教、学、练”;三体合一;线上线下融合

中图分类号:TP39;G434" " 文献标识码:A 文章编号:2096-4706(2024)18-0189-06

Teaching Practice and Exploration of Compilation Technology Course Based on Modern Information Technology

—Taking the Integration of “Teaching, Learning, and Practicing” as an Example

HU Wenqiang1, SHI Guiling1, ZHU Jianhua2

(1.School of Software Engineering, Huazhong University of Science and Technology, Wuhan" 430074, China;

2.School of Computer Science and Technology, Huazhong University of Science and Technology, Wuhan" 430074, China)

Abstract: In view of the current situation such as heavy task, difficult content and short time in the compilation course task, one teaching reform idea of “teaching, learning, and practicing” three in one online and offline integrated compilation technology teaching is proposed based on the EduCoder practical teaching platform. One hierarchical structure of course content has been designed based on the characteristics of integrated online and offline teaching, adopting a teaching mode that combines experimental and theoretical teaching in parallel, as well as the intersectant teaching mode of “teaching, learning, and practicing”. Multi-level clearance cases have been developed, and a multi-dimensional evaluation system has been proposed. The teaching reform ideas have been applied in practice, and the teaching quality has been significantly improved.

Keywords: compilation technology; “teaching, learning, and practicing”; three in one; online and offline integration

0" 引" 言

在程序开发及运行的全流程中,编译是使代码从以人为本的应用程序转化为以硬件为本的机器语言的过程,同时在计算机及其相关专业中,编译技术则是贯穿应用场景、算法、软件、硬件的一门承上启下课程,至关重要[1]。

编译课程在设计时分为理论和实验,其中理论内容任务是深入了解相关算法,难点在于编译理论知识大多为数学表达,较为抽象,包含的算法知识与常规大家所了解的算法存在表达形式上存在较大差异,难以理解;实践课则一般要求能够用语言编写完成一个完整的编译器或者部分编译功能模块,所采用的工具和语言是编译课程独有的,导致理论知识和实验内容存在形式及内容上的切割,中间连接环节过于薄弱,较难完成。因此传统编译实验课程亟待教学改进[2]。

编译技术这门课对很多专业课起到重要的支撑作用,各个大学都非常重视,不同学校不同专业对编译课程要求存在差异,各有侧重。例如斯坦福大学侧重点在于研究各种算法和理论技术,并找到解决问题的最优方法;卡内基梅隆大学、加州大学伯克利分校、华盛顿大学等基于特定语言,实现完整编译器,并且包含代码优化或垃圾收集器等高级内容。国内清华大学和国防科学技术大学使用自动生成工具实现JAVA等多语言编译器;武汉大学要求完成关键模块的代码编写;吉林大学实践课完成从词法分析到目标代码生成全过程。

总体来看,国外高校编译课程非常重视实验,以开源语言为对象,涉及编译每个阶段以及面向对象语言编译器实现、代码优化等高级内容。国内大学则主要是借助自动生成工具再现基础理论知识。但是整体而言,编译实践课程无法较好适应以人工智能和大数据为代表的数据产业和新型软件开发模型需求,缺乏与行业及产业的紧密联系。

因此如何通过编译实验将编译技术理论落地,同时让学生掌握编译相关知识点,并体会编译在计算机整体课程的重要性,目前依然是编译课程授课面临需要解决的问题。经过分析,目前笔者所面临的编译技术实验教学主要存在以下几个问题:

1)随着教学计划的调整,教学学时的压缩,如何能在更短的时间内让学生快速深入了解编译算法并完成一个编译器的编译实验任务。

2)如何利用网络资源创新教学架构设计,重构课程内容,完成线上线下融合状态下的内容及任务分割。

3)如何转变传统评价方法,优化评价模式。

针对这种现状,我们提出了基于头哥平台的“教、学、练”混合教学模型。

1" 线上线下混合教学方案设计

随着培养计划的调整,如何能在较短时间内让学生快速掌握理论内容并完成实验任务成为老师需要解决的一个难题。

1.1" 教学模式设计

线上线下混合教学由于有机地融合了教学内容、教学平台、教学方式,具有开放性、个性化学习、多样化教学以及教学资源共享等特点,增加了教学在时间和空间上的灵活性,在当今时代越来越引起重视[3]。而且在高校中,合理引导学生利用IT技术助力学习是必经之路,也为混合式教学模式提供了便利的基础条件。大学生也具备良好的自学能力和信息素养,以及相当不错的内驱力,可以有效结合线上课程、线下理论课以及网络信息对课程内容主题进行深入的探索,并把握自己的学习节奏,有利于学生个性化学习[4]。

传统的教学模式重点在线下课堂的讲解和课后的练习,教学环节中教师过强主导,学生被动学习,但是线下教学也是不可替代的,例如思政教育、合作解决问题能力的培养、师生情感交流等方面,同时线下也可以较好地有针对性地进行个性化辅导[5-6]。因此混合式教学并不是简单地增加课程学习的内容,而是针对课程的目标,以学生为中心,结合线下和线上学习各自的优点,以学生能力培养为导向,以“教、学、练”混合为工具,培养学生自主思考自主、主动发现问题和解决问题以及拓展学习能力的培养。

采用基于“教、学、练”三体合一的线上线下混合教学方式不仅能有效利用学生空余时间和精力,还能够在较短学时内覆盖编译各环节内容、完成全程实验,时间空间灵活性强,还实现了理论与实践的深度耦合,提升了课程的高阶性和创新性。同时配合教学模式方法、考核方案的改革,编译课程教学由原来的“编译前端理论介绍”升级改造为目前的“完整知识基础构建+系列游戏通关训练”,使得抽象概念、原理、方法能够落具体转化为可执行程序编程思路,进而可以有效提升学生深入应用基本原理解决实际计算问题的能力。

1.2" 课程内容整体结构设计

由于编译实验由原先的线下转向线上线下融合方式,可以利用学生空余时间,理论和实验并行,因此课程内容需要进行重组,线上实验方式以及线上线下融合评估体系需要重新设计[7]。为了解决编译实验学时少、内容多、实验难的矛盾,笔者对课程理论和实验体系进行重构。

通常为了让学生对编译体系有一个完整熟悉,编译实验的最终是生成一个简单的编译器或者带有特定功能的编译器[8]。而要想完成一个简单完整的编译器,其中词法分析和语法分析都是处理源代码,通过构建正则表达式和自动机对单词进行识别,并检查语言是否符合规定的语法结构,并生成相应的语法树用于后续的语义分析和代码生成,主要是编译前端任务,相对而言比较简单,所以可以考虑直接和课程内容并行;语义分析、中间代码生成、代码优化则涉及算法的具体应用,比较复杂,同时不同源程序之间差异化太大,学生理解起来比较困难,需要个性化指导则放到线下授课时讲授并答疑。

编译的整个课程内容包括形式化表达、词法分析、语法分析、语义分析、中间代码生成优化到目标代码生成,在这条主线中,每个部分涉及多个知识点,整体知识体系如图1所示。考虑整个课程的时长和理论课程的进展,讲编译器开发整体内容分割为两部分,一部分与课程并行,采用课堂进行理论课授课,课后利用网络平台进行实验指导、形式化语言描述实践及网上实时评价,中间缺失部分知识采用课后作业线上答疑及提交方式补全,形成知识获取闭环操作。

因此整个编译实验体系应该类似课本知识采用层次递进方式,目前已经有很多老师做出了各种探索[9-10]。而本课堂最终对编译知识进行分层分割,将正则表达式、自动机、词法等相对成熟而又比较耗时的编译器“前端”理论前移到与理论内容授课时间并行,使得学生课上理论内容,课后直接借助工具快速掌握基本概念及相关形式化表达方法,实现时间轴上理论和实操同步;而代码生成、代码优化等“后端”内容因为复杂度高,学习起来难度更大,学生也感觉压力更大,则留到线下,等理论知识授课完成,前期实验也完成,已经在脑海里建立了基本概念的情况下,再利用线下面对面沟通方式进行授课和学习。

1.3" 实验教学平台选择

在整个授课体系中,实验教学平台并不仅仅只是一个作业题发放和提交的工具,更重要的是要求能够承载实验设计、实验指导、实验验证和实验评价,因此简单的上传单向平台是不能满足要求的。当前的信息大类实验平台主要包括:

1)单向垂直学习网站,例如慕课网是互联网技术垂直学习网站,以独家视频教程、在线编程工具、学习计划、问答社区为核心特点,但实践教学模式主要局限在相对封闭的范围内,提供非常有限的实验实训资源,难以满足学生能力培养需要;优达学城目标是将学员培养为世界一流的网站开发者、数据分析师和移动开发者,但主要为英文课程。超星学习通建设课程资源、发布课程资源,课前、课中、课后学习督导与互动,学习反馈,在线测试,学习日志数据记录。

2)在线互动编程网站,例如Codecademy主要提供前端相关等课程,采用游戏通关方式来完成学习。牛客网为编程学习提供一些面试笔试试题。Treehouse通过视频、测试、勋章等方式进行网站及应用开发教学,课程类别范围较广,除了信息大类相关课程,还有业务管理等课程内容。头哥(EduCoder)将群体协同、开放共享、持续评估引入实践教学平台构建过程[11]。合天智汇构建了面向网络空间安全人才培养的实践教学环境和知识体系。类似平台还有清华大学uCore实验平台、CMU的计算机系统实验平台等。

3)普通社交群。例如QQ群,微信群,QQ学习群。可以建立QQ学习群,实时发布视频会议、在线课堂直播教学,发布PPT、视频、实验指导书等教学资源,非实时回答学生问题,通过电脑远程指导学生操作。

4)开源社区。开源软件社区支持大规模开源开发者分享开源技术、传播开源理念、推广开源项目,形成了产教一体化的在线学习模式,典型代表包括Github.com、SourceForge.net、Trustie.net、Gitee.com、CSDN.net、learnerhub.net等。

上述平台可以从不同角度为计算机实践教学提供各种帮助和支持,但是相对于编译实验来说,需要完成的任务包括:实验知识在线讲解;实验在线完成;实验实时评价及修改,双向可视;实验完成相关细节信息记录及统计分析,等等。综合考虑,我们首选教育部推荐的EduCoder平台作为我们实验线上教学平台,同时QQ群辅助,再结合线下面对面指导完成整个编译课程实践教学。EduCoder提供了通用实践项目、编程实践项目、笔记实践项目、仿真实践项目4种实践模式,其中编程实践项目对应于实践资源,同时相互之间可以通过项目打通,如图2所示。

1.4" 具体实施策略

在具体实施过程中,首先借助在线课程平台,采用直播或者录播形式进行部分相关实验内容例如形式化语言、正则设计等补充内容的授课,然后以课程资料方式提供相应的实验案例,并进行视频讲解。同步创建实践课程和案例,设计实践项目任务及检测案例。如图3所示内容为我们设计的其中一个关卡,在图中,我们设计了系列层次任务。

学生在学习了相关理论知识后,可以进入项目实战,则可以进入该实训项目的实训关卡,在界面上, 有任务描述、知识点讲解、代码编写和测评。学生根据要求完成代码编写后,可以自动进行测评,不通过则继续修改,通过则自动进入下一个关卡,同时学生和老师可以通过QQ或者其他实时通信平台可以双方同时在线对代码进行修改,同步特定指导,形成实时双向互动。

2" 多维度教学评价方式设计

随着授课方式以老师讲述为中心,随后演变为理论实践并重,到现在的以学生为中心,同时环境从以前的单机到现在的网络化在线评测系统。传统的评价体系已经不适应现在的需求。在笔者长期的教学过程中发现,学生对于程序设计类的课程的学习基础、能力和兴趣差异很大,如果采用原先的统一的一刀切方式进行实践教学和评价,则越发增加基础相对比较薄弱的学生对编译实践课程的畏惧感,同时对于基础好想早跑的学生则需要提供补充资源。因此需要制定新的学生过程性评价体系。当前类似EduCoder的平台提供了在线实践和评测系统为灵活有效的评价体系的创建提供了有力的工具。对于编译实践类课程而言,考核难点在于:

1)考核方式比较复杂。不能简单地采用笔试考核方式,笔试主要考查学生对单个知识点的掌握,但是编译实验的要求是能掌握高级语言编译的基本原理,能理解编译系统中各个模块的功能和实现方法,能够对不同方法的优劣进行对比和分析,同时能利用软件工程方法分析和设计编译程序的各个模块并实现,关键在于能根据目标融合多个知识点选择适用的方法解决具体问题。在这个过程中,传统教学中的知识点的作用犹在,但这些知识更多地作为达成目标的基础而存在,学生需要了解如何正确地展示这些知识点,并且通过什么样的控制流程来实现预定目标。

2)有效实践时间不确定。完成一个特定功能的编译器需要经历前期需求分析、功能选择、模块划分与界定、编码实现与调试等环节,而且部分环节需要反复进行的,因此,如何界定编译有效实践时间是个难题。

3)基于分工的考核方法中成员分工和个人贡献较难界定。由于时间关系,有些同学组队完成一个相对比较复杂的编辑器,但是困难在于分工没有界定标准,模糊空间大。

4)成果容易复制。针对这些难题,笔者设计了多维评估模型,如图4所示,考虑多维因素,结合多种评估方式进行最终评价。在题目难度分级上,结合编译特点,进行量化处理,例如能识别的程序错误按个数进行等级划分,能处理的程序形式按个数进行计算,综合考虑,形成题目难度级别,组队方式允许个人独立完成也允许组队,然后根据学生上传时间确定实践完成时间,最终看演示效果。在具体评估方式,采用答辩、成果演示和提交报告多种方式结合,根据个人意愿自由选择进行最终答辩评分。

3" 结果分析

笔者采用文章所提出的方法进行教学已经一段时间,整体而言,学生学习积极性比较高,知识掌握比较扎实,大部分能够有一定灵活性的完成实践要求。在具体实践过程中学生可以选择单人也可以根据兴趣爱好或其他因素自由组合成为一个项目组,每个项目组成员不能超过三人,项目组成员之间必须明确分工,且这种分工要符合项目开发实践要求,要避免为组合而组合、为感情而组合、为照顾而组合的情况发生。

在题库通关过程中,根据难度对题目适应对象进行描述,将与此同时,要将项目设计的大致内容、关键知识点、所采用语言以及是否允许自选题目等基本信息告知学生。一般而言,动手能力较强的学生平时就已经在不断进行积累,这些学生已经能够就这些实际问题向授课教师提出问题,此时试题关卡已经全部打开,学生可以根据自己时间安排推进开发工作,同步QQ群创建,可以线上随时提问,老师收到问题后,可以在线修改学生每一关的答案,并进行解答。最后阶段是成果提交,允许多种方式进行成果提交,部分能力比较强的学生对自己所做的项目选择进行公开答辩。答辩内容分为学生自述、同学提问和教师提问三个步骤。通过答辩,不同项目组的同学可以了解其他项目组所做的题目、思路及使用到的技术,从而达到互相学习、互相借鉴、扬长补短的学习效果,实现在考试中学习、在学习中考试的目的。也有部分学生仅仅展示并介绍自己的成果,最后所有的同学将以纸质文档的形式上交给任课教师,该文档除了部分老师已经确定的框架,还可以根据个人情况添加内容。

运行实践效果上述编程实践类课程的考核方法在笔者所在单位进行了一轮教学实践,随着课程教学的推进,学生每日举行在线实验评测的次数都保持在较高水平。

在学生完成实验过程中,笔者收集了相关数据,并进行了分析,如图5所示,测试次数表现了在线实践平台以及游戏化闯关式的实验实践充分激发了学生探索的积极性。同时,通关耗时下降,如图6所示,说明学生在实验实践过程中掌握的知识点和技能点能够快速增加。在这一次教学过程中,虽然对于实践完成方式发生改变,但是根据最终结果来看,这种方法能够有效提高学生兴趣,使得每位学生能够找到合适自己的题目和方式,避免以往考核过程中出现的模糊空间,效果远远超过预期,同时在实践过程中也出现了一些情况,后期将进一步改进。

4" 结" 论

论文针对在编译教学实践中面临的问题,提出了“教、学、练”三体合一的线上线下融合编译技术教学方法,并开发了层次化关卡实验,学生减少了对实验的畏难心理,提高了兴趣,取得了较好的效果,后期将进行进一步迭代改进。

参考文献:

[1] 胡玲.基于认知学习理论的编译原理课程SPOC混合学习实践 [J].内江师范学院学报,2023,38(2):106-112.

[2] 高雪瑶,张春祥.案例与项目相结合的编译原理教学改革 [J].高教学刊,2024,10(3):64-67.

[3] 张昱,黄奕桐.编译原理课程的在线综合性软件实践构建与实施 [J].计算机教育,2021(4):41-45+50.

[4] 翟建丽,基于线上线下结合的编译原理课程多样化教学策略探究 [C]//2023年第三届创新人才培养与可持续发展国际学术会议论文集.北京:香港新世纪文化出版社,2023:298-299.

[5] 张敏,刘骥,葛亮,等.以培养可持续竞争力为目标的编译原理课程改革 [J].计算机教育,2023(8):31-35.

[6] 万伟韬.基于CDIO工程教育模式的“编译原理”课程教学探索与实践 [J].科教导刊,2023(20):106-108.

[7] 聂文梅,宋晓霞.基于对分课堂的编译原理混合教学改革 [J].计算机教育,2023(10):107-11.

[8] 何希,陈佳,农健.“编译原理”课程教学改革探讨 [J].梧州学院学报,2021,31(6):85-89.

[9] 于双元,徐金安,丁丁,等.基于层次递进模式的“编译原理”课程教学研究与实践 [J].工业和信息化教育,2019(3):51-55.

[10] 邢建国.“编译原理”课程的教学改革实践 [J].中国信息技术教育,2023(10):96-99.

[11] 尹刚,王涛,余跃,等.EduCoder:大规模开放在线实践教学探索与应用——疫情防控下的在线实践教学新途径 [J].软件导刊,2020,19(10):1-7.

作者简介:胡雯蔷(1976—),女,汉族,湖北武汉人,副教授,博士,研究方向:软件工程;通信作者:石桂玲(1964—),女,汉族,辽宁沈阳人,副高,本科,研究方向:课程体系建设;祝建华(1963—),男,汉族,湖北武汉人,副教授,硕士,研究方向:编译。

标签:  在线 

免责声明

本文来自网络,不代表本站立场。如有不愿意被转载的情况,请联系我们。

iidomino cuppor