编译原理课程教学改革实践探析

2024-06-16 15:20张永梅杜治蓉马礼束劼杨建
电脑知识与技术 2024年12期
关键词:实践创新能力课程改革

张永梅 杜治蓉 马礼 束劼 杨建

关键词:编译原理;系统能力;实践创新能力;课程改革;扩展实验

0 引言

2021年国务院发布的《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》指出要建设高质量教育体系,激发人才创新活力。2019年启动国家中长期科学与技术发展规划(2021-2035年),将培养和提高学生的系统能力作为提高计算机专业本科教学质量和水平的一个重要措施[1]。

编译原理课程是计算机科学与技术专业的必修专业基础课程,课程难度较大。编译原理课程内容主要是讲授原理性质,具有理论内容多,方法比较抽象,课程内容环环相扣的特点。编译原理已经被广泛应用于人工智能、自然语言理解及处理、搜索引擎等领域[2]。

编译原理是一门理论性、技术性、实践性很强的课程,理论和实践相结合是课程的重要特色。北方工业大学开设的编译原理相关课程包括编译原理、编译原理实践课程。编译原理课程主要介绍编译系统的结构、工作流程及编译程序各个组成部分的设计原理和实现技术,使学生掌握编译过程中的相关原理和编译技术。编译原理实践课程是使学生通过实践,熟悉和掌握基本的编译技术和方法,深化理解和灵活掌握教学内容,培养学生设计算法的能力和编程解决实际问题的动手能力。

编译原理和编译原理实践两门课程强化了学生的计算机系统能力[3]以及解决复杂工程问题的能力,有利于提高学生的实践创新能力。目前,编译原理、编译原理实践课程在培养学生的系统能力和实践创新能力方面仍然存在不足,需要对编译原理、编译原理实践课程进行改革,进一步提高学生的系统能力和实践创新能力。

1 以系统能力和实践创新能力培养为教学目标

教育部高校计算机科学与技术专业教指委强调,计算机学科的学生应该具备多项专业能力,即计算思维能力、程序分析与设计能力、算法分析与设计能力、计算机系统能力及创新能力[4]。文献[5]指出编译原理定位为以培养贯通软硬件、具备系统能力和实践创新能力的人才为课程教学目标,通过对标本科毕业能力指标点,逐步从知识型课程转化为能力型课程。

北方工业大学编译原理课程主要围绕计算机系统中重要的系统软件即计算机编译程序的设计与实现而展开,使学生的专业基本技能和综合运用能力得到提升,重点培养学生的计算机系统能力和实践创新能力。编译原理课程能够帮助学生理解程序的运行机制。在编译器的设计与实现过程中,学生需要掌握程序设计语言的词法分析、语法分析、语义分析等基本原理,使学生能够深入了解源程序在计算机内部如何执行。通过编译原理课程的学习,使学生可以深刻理解程序运行机制,这对于提高系统能力具有重要意义。

编译原理课程能够培养学生的问题解决能力。在编译器的设计与实现中,学生需要面对各类挑战,例如处理复杂的语法结构、优化程序等。这些挑战要求学生具备良好的问题求解能力和创新思维,能够找出问题的根源,并提出有效的解决方案。通过编译原理的教学改革,有效提高学生的实践创新能力。

2 编译原理课程具体改革方法

编译原理课程所含内容既有抽象的问题,又有较为成熟的理论[6]。除了编译器涉及的相关理论、知识、技术之外,还包括基本问题求解的典型思路和方法,以及典型算法,是继程序设计(C语言、C++等程序设计语言)、数据结构、操作系统等课程之后,从系统的角度再认识程序和算法的一门课程。该课程具有理论性强、综合性强、连贯性强的特点。本文主要从改革教学内容、优化教学方法、增加扩展实验三个方面对编译原理课程进行改革。

2.1 改革教学内容

将课程思政引入编译原理课程教学中。目前国内编译器核心技术缺乏,创新能力不足。在课堂教学中,强调编译原理课程的重要性,引导学生树立正确的学习方向,激发学生的爱国主义热情,为实现系统软件、系统结构和芯片的“中国造”而努力奋斗。

在编译原理课程中,学生需要了解编译程序的各个阶段,包括词法分析、语法分析、语义分析、优化和代码生成等。同时,学生还需要熟悉计算机体系结构的相关知识,了解指令集、寄存器、内存等硬件组成部分。只有具备这些知识,学生才能够理解编译程序的运行过程,并对其进行合理优化。

北方工业大学编译原理课程采用陈火旺院士等编写的《程序设计语言编译原理(第3版)》教材。在教学过程中引入国外编译原理经典教材的内容。国外编译原理经典教材分别为Alfred V. Aho等人编写的《Compilers: principles, techniques, and tools》、AndrewW. Appel 编写的《Modern Compiler Implementation inC》、Steven S. Muchnick编写的《Advanced Compiler De?sign and Implementation》,这三本书在编译原理领域分别被称为“龙书”“虎书”“鲸书”。

在讲授“引论”时,补充介绍“鲸书”中编译器后端优化的处理,加深学生对整个编译系统的理解。在讲授“属性文法和语法制导翻译”时,引入“龙书”中面向对象编译、类型检查等技术,提高学生高效编写程序的能力。在讲授“优化”时,补充介绍“虎书”中数据流分析、循环优化等内容,提升学生的系统能力。

在“引论”中,重点介绍编译过程及编译程序总体结构,使学生掌握基本的概念和系统的总体结构。强调编译前端、编译后端的相关概念,以及将编译程序划分成前端和后端的优点,使学生在系统级上认识算法、系统的设计,具有把握系统的能力。

编译原理课程涉及一些经典的算法和数据结构,例如词法分析中的正则表达式匹配、语法分析中的LL(1)分析和LR分析等,这些算法和数据结构是计算机科学与技术领域中的重要基础知识。通过深入讲解这些知识和应用,提高学生的算法设计和分析能力,培养学生的创新思维和解决实际问题的能力。

目前,系统化教学主要缺乏课程间的沟通衔接。重构课程体系、梳理课程间的衔接是系统能力培养的基础。在教学内容上,教师注重课程间的衔接,注重软硬结合,强化系统。目标代码生成对于培养学生的系统能力和实践创新能力极为关键。目前,我国具备算法设计能力的人才较多,而具备系统软硬件开发能力的人才较少。

为了培养这方面的人才,在讲授目标代码生成时,强调目标代码生成涉及计算机底层硬件和体系结构的理解,不同硬件平台的指令集、寄存器分配、内存管理等知识的掌握,同时涉及目标代码优化和大量的编程和调试工作。例如,在X86架构的计算机上生成目标代码,该架构使用X86指令集,具有多个通用寄存器(如EAX、EBX、ECX、EDX等),以及一些特殊用途的寄存器(如栈指针寄存器、基址寄存器等)。为了高效生成目标代码,编译器利用这些寄存器存储临时变量、计算结果等,以充分利用计算机的寄存器。通过指令选择优化,充分利用指令系统的并发能力和向量指令集等特性。目标代码生成涉及的寻址方式、指令系统等用到了汇编语言程序设计、微机原理与接口技术、计算机组成原理课程的知识。通过目标代码生成进一步梳理课程之间的衔接,提高学生的系统能力。

在课堂上,介绍一些最新的编译原理技术,如即时编译技术、动态代码生成技术,鼓励学生尝试探索新的编译优化方法和算法。学生不仅有机会深入了解编译原理相关技术的前沿进展,还可以进一步思考如何改进和创新现有的编译系统。这种培养创新意识的方法,激发了学生的创造力和创新潜能,提高了实践创新能力。

此外,将人工智能、并行处理、大数据处理等前沿技术融入课堂,开阔学生视野,促进学生接触前沿新技术,有利于提高学生的学习兴趣和创新能力。例如,在讲授“高级语言及其语法描述”时,引入自然语言理解。自然语言的分析和理解过程是一个层次化的过程,主要包括语音分析、词法分析、句法分析、语义分析四个层次。将自然语言理解的相关内容引入课堂,并将自然语言分析和理解的层次化过程与编译原理课程的0型文法、1型文法、2型文法、3型文法进行比较与分析,提高学生学习、理解和应用最新技术解决实际问题的能力。

2.2 优化教学方法

编译原理课程涉及“自上而下”和“自下而上”的系统设计方法,包括思想和方法。编译系统是一个相当规模的系统的设计。编译原理、编译原理实践课程有利于提高学生在系统级的理论和实践能力。根据编译原理课程特点,建立了“线上线下混合式”的教学方法,提供更灵活和多样的教学方式,促进学生自主学习和计算机系统能力的培养,提高编译原理课程的教学效果。

课堂讲授以能力培养为导向,建立学生为中心、教师为主导的课堂互动模式,激发学生自主学习的热情与兴趣。改进课程教学方法,充分利用MOOC、翻转课堂等新型教学方式,制作图文并茂的动画等教学资源,将抽象的知识以动画+讲解的方式展示出来。梳理出编译原理课程中知识结构及相互之间的关联关系,并强调实践的重要性。

注重讲解各种计算机编译程序设计原理和算法的思想。为保证教学质量,课堂讲授中重点突出、点面结合,既保证学生接受完整的编译原理课程知识体系结构的教学目标,又针对关键问题、重点内容进行详尽、多引入实例的透彻讲解,使学生真正领会和掌握课程的知识要领及技术要点。通过深入讲解一些典型的编译原理案例和实际应用,帮助学生将理论知识与实际问题相结合,提高学生在编译原理领域的系统能力,培养学生分析和解决复杂问题的能力。

加强系统设计的案例教学,有利于解决学生知道算法却不能构建完整系统的问题。通过一个C语言程序的编译器实例,深入分析编译原理中的词法分析、语法分析、语义分析以及代码生成等环节,从而提高学生对编译原理的系统理解和应用能力。

增加网络资源的利用和网上讨论,将线上、线下答疑贯穿整个教学过程,通过多种形式提高课程的教学效果和教学质量。例如,学生可以利用MOOC和国家精品课程等进行查漏补缺,推荐学生学习国防科技大学王挺教授等主讲的国家精品课程“编译原理”,该课程可以在哔哩哔哩平台进行免费学习。网上讨论主要通过微信问答的方式进行,提升学生学习效果。将课程讲授内容、习题课课件、单元测试及答案分析等以PPT或Word等形式上传到北方工业大学多模式教学网。北方工业大学通过智慧课堂直播平台录制了讲课视频,学生都可以免费下载,供学生在任何时间、任何地点自主学习。

2.3 增加扩展实验

系统能力培养的关键在于实验教学,并且实验也是培养学生实践创新能力的关键。在编译原理和编译原理实践课程中,学生不仅需要掌握课本知识,还需要进行实际的编程实践。在编译原理实践课程中,结合理论和学生水平,有针对性地布置实验内容,系统而有效地训练学生的软件开发能力,达到理论与实践的融会贯通。北方工业大学编译原理实验内容主要以词法分析器、语法分析器的构造为主。通过编写词法分析器、语法分析器等程序,可以将理论知识应用到实际中,有效锻炼学生的编程能力和解决问题的能力。

高效的词法分析器、语法分析器构造与计算机硬件(存储空间、寄存器、硬件加速器)有关。词法分析器和语法分析器的构造,不仅仅是对编译原理知识的进一步掌握,也是对硬件设计和优化思维的训练,引导学生学习如何将算法和数据结构映射到硬件实现,优化硬件设计以提高计算机性能。例如可以通过不同的数据结构如链表、栈、队列等,优化词法分析器。在指导实验时,引导学生在实验过程中遇到问题时,通过分析和解决问题的方式,培养学生的解决问题的能力。

除了构造词法分析器、语法分析器之外,给出了扩展实验,供编程能力较强的学生自愿进行。例如,计算机博弈是人工智能领域的一个重要分支。扩展实验为球类描述语言的词法分析、语法分析实验。主要考虑比赛需主、客队同台(场)竞技。如沙滩排球、乒乓球、篮球、足球和网球等。这种球类比赛具有进攻/防守形成博弈、博弈双方的技术动作具有相似性的特点。可以将这种比赛的相关技战术描述抽象成如下形式:队员+技术动作+技术动作发生区域+技术动作结束区域

根据球类比赛技战术分析的需求,设计的解释器由词法分析器、语法分析器和语义分析模块三部分组成。词法分析器负责词法分析的预处理和输入单词的解释;语法分析器负责输入码的语法结构检查和解释;在词法分析器和语法分析器的基础上,语义分析模块负责比赛技战术的分类与统计工作。

3 改革成效

北方工业大学从计算机专业本科生开设编译原理课程以来,围绕编译系统结构、工作流程及编译程序各个组成部分,通过对课程理论知识、经典算法、新的研究成果进行讲授,对教学内容进行更新,不断优化教学方法,以及完善实验内容,编译原理教学改革取得了积极成效,学生的成绩、系统能力和实践创新能力显著提升。

2023年编译原理课程卷面考试平均成绩明显高于2022年和2021年卷面考试平均成绩,卷面考试平均成绩逐年提高。2023 年的复杂题目相较于2021 年、2022年明显不同,其对知识的融合度更高,对学生在复杂工程问题的解决过程中,能够灵活应用所学编译原理知识分析、设计出合理的方案,解决其他领域的相关问题的能力要求更高。这表明编译原理课程的改革有效。

2018年,北方工业大学被遴选为第三批教育部高等学校计算机类专业教学指导委员会“计算机类专业系统能力培养试点高校”。2022年,北方工业大学“计算机系统能力培养本科育人团队”被评为北京高校优秀本科育人团队,进一步提高了北方工业大学计算机类专业学生的系统能力、实践创新能力,提升了计算机类人才的培养质量。

此外,以创新竞赛或项目进一步提升学生的实践创新能力,激发学生的想象力、创新力和工程实践能力,以赛促学、以赛促教。通过组织学生参加编译原理相关的创新竞赛或项目,进一步激发学生的创新思维能力,培养团队合作和实践创新能力。北方工业大学学生在2023全国大学生计算机系统能力大赛中获得二等奖的好成绩,实现了系统能力大赛零的突破。

在本科毕业设计方面,学生的系统能力和实践创新能力明显提高,毕业设计内容和方法具有较强的创新性,学生在应对新问题时,具备较强的分析问题和解决问题的能力。在就业方面,学生的计算机软件、硬件应用能力和算法设计能力都有明显提升,提高了学生的就业率。

4 结论

本文分析了培养学生计算机系统能力和实践创新能力的编译原理教学目标,从改革教学内容、优化教学方法、增加扩展实验三个方面对编译原理进行了教学改革。从理论和实践上全面提升学生的系统能力和实践创新能力,以满足未来智能时代社会的迫切需求。

猜你喜欢
实践创新能力课程改革
“常微分方程”课程教学中大学生实践创新能力培养研究
基于CDIO以培养学生创新能力为导向的离散数学课程的改革研究与探索
“双创”形势下高职财务管理课程改革探索
项目教学法在微电影制作教学中的应用
基于创意的对口单招色彩课程改革突破点研究
校企协同实施高职专业课程改革的实践研究
基于结构模型竞赛的土建类实践教学研究
计算机通信类专业实践创新能力培养模式的研究