投稿问答最小化  关闭

万维书刊APP下载

以培养可持续竞争力为目标的编译原理课程改革

2023/8/29 9:45:37  阅读:85 发布者:

0   引 言

在信息化时代,基础的编程能力是几乎所有学科大学生必备的基础技能,而对于计算机学科的学生而言,新时代计算机专业教育应将培养学生的可持续竞争力作为今后一段时间的主题,专业教学要更重视提升学生学习兴趣,深化专业核心课程学习,拓宽学生跨专业视野,从而提升学生的综合能力和可持续竞争能力[1]

编译原理作为计算机专业技术类的核心课程,由于课程内容抽象性和综合性较强(例如形式化语言等内容),学生理解接受起来较为困难;此外,课程教学中存在“重前端理论,轻后端技术”、教学内容相对陈旧、教学体系较为僵化等问题。从新时代人才培养需求的角度来看,以培养可持续竞争力为目标的编译原理课程教学改革思路就是,将深度培养学生的专业核心能力作为课程发展和改革的首要目标,对课程进行重新定位,重构教学内容和方式。

1   以可持续竞争力培养为课程目标

教育部高校计算机科学与技术专业教指委强调,计算机学科学生应具备多项专业能力,即计算思维能力、程序分析与设计能力、算法分析与设计能力、计算机系统能力及创新能力[2]。在可持续竞争能力中,计算机系统能力是核心。编译原理课程定位为以培养贯通软硬件的人才为课程教学目标,通过对标本科毕业能力指标点,逐步从知识型课程转化为能力型课程[3]。采用层次化结构重组教学内容,在教学中帮助学生实现各项能力的递增(如图 1 所示),将课程分为 3 个层次,分别对标计算机专业认证能力达成度指标点中针对课程细分出的 4 项指标点。

1R1.5 能够运用计算机基础知识和专业知识,设计并开发实际工程问题中的计算机软件系统。

2R2.3 能够应用计算机科学与技术的基本原理,通过文献研究,深入分析复杂计算机工程问题,以获得有效的结论。

3R4.1 掌握复杂计算机工程研究的基本方法,能够对计算机科学原理进行验证。

4R4.2 能够基于科学原理并采用专业科学的方法,针对复杂计算机工程问题进行实验设计。

2   以系统能力培养为核心重组课程

编译系统是计算机系统中的软硬件接口,编译原理主要针对如何将高级语言源程序转换成面向计算机硬件能够识别的目标代码,系统学习相应的基本原理、设计方法和实现技术;课程内容覆盖了程序设计语言、数据结构与算法、计算机组成原理的相关内容;课程实践需要学生独立完成完整的编译系统软件设计及实现,是对程序语言设计、软件工程等课程的深入理解与应用[4]。因此在课程改革中,可以将编译原理课程定位为本科阶段培养贯通软硬件人才的重要课程,将提升学生的计算机系统能力作为课程的教学重点。在国际计算机科学课程大纲 CS2013 中对计算机系统能力也有明确涉及与阐述,计算机系统能力是指能够利用计算机系统层面的基本原理来构建以计算机技术为核心的应用系统并能够解决实际问题的能力[5]。编译原理课程可以从以下两种角度出发,帮助学生建立计算机系统思维能力和实践能力。

1)计算机系统思维能力培养:以程序设计语言和程序的分析为出发点,通过基础方法论层面的学习,例如形式语言与自动机理论、自顶向下和自底向上的语法分析方法、目标代码优化等,将计算机系统的重要概念在课程中串联起来,帮助学生建立联通计算机软硬件的计算机系统框架,提升系统思维能力。

2)计算机系统实现能力:以程序员视角,从编译系统软件的设计与开发的角度,进行系统级软件的开发设计,训练学生编写大程序的能力,提升系统实践方面的能力。

目标 1:使学生掌握职业生涯中反复用到的基础理论和基本方法,以用于解决难度较大的问题,处理复杂系统的设计与实现。对于毕业能力指标点 R1.5 R4.1 的达成提供支撑。

目标 2:培养学生选择适当的模型,以形式化的方法描述语言及其翻译子系统,将它们用于系统设计与实现的能力。对于毕业能力指标点 R2.3 的达成提供支撑。

目标 3:强化学生数字化、算法、模块化等专业核心意识,对自顶向下、自底向上、递归求解、模块化等典型方法的掌握,培养其包括功能划分、多模块协调、形式化描述、程序实现等在内的复杂系统设计实现能力。对于毕业能力指标点 R1.5 的达成提供支撑。

目标 4:使学生经历复杂系统的设计与实现,培养其对多种方法、工具、环境的比较、评价与选择能力。①方法选择:选择实现词法、语法分析的方法;②实现途径选择:直接设计实现、使用某种自动生成工具设计实现(自学);③工具与环境选择:使用的开发语言和环境;④比较与评价:在组间相互评价中锻炼评价能力。对毕业能力指标点 R2.3 R4.2 的达成提供一定的支撑。

目标 5:通过按组完成系统设计与实现,培养学生团队协作能力。学生要在分工、设计、实现、口头及书面报告等环节中相互协调、相互配合。通过实验系统设计实现过程中的组内讨论,验收过程中的报告撰写、陈述发言等,培养专业相关的表达能力。对毕业能力指标点 R1.5 的达成提供一定的支撑。

3   提升迭代式项目实践驱动能力

运用迭代式项目教学法,逐步深化专业知识的学习,在编译原理系统软件的迭代开发实践中逐步达成能力培养目标。迭代开发是软件开发中常用的方法,针对编译原理课程的特点和教学目标,即学习如何设计开发一款编译软件,采用迭代式的项目开发方式进行编译原理课程实践是非常适合的。在教学过程中,指导学生采用演进式策略,通过多次迭代开发的方法,实现一个完备的高级语言编译软件。在这个过程中,将课程重点内容分解到各次迭代中,引导学生在模拟的项目开发环境中将理论教学内容及时进行应用,锻炼软件设计开发能力及团队协作精神。

3.1 迭代实践教学过程

在编译原理课程的教学过程中,围绕编译软件的建立,创建一个“实践(小项目)—学习—总结—实践(更大项目)—学习—总结”迭代教学过程的实例(见表 1)。

4 个阶段的项目均可以生成一个规模不同的编译器,后阶段的项目是在前阶段基础上的扩充与优化。随着教学内容的展开,项目经过多次迭代开发,涉及的知识单元不断扩展,也促使学生由基础不断深入,在重复渐进的开发实践中,能够充分熟悉所学内容,构建自己的知识体系;另一方面,随着项目进展,反复地进行实践,面对新功能,促使学生进行思考并找寻新思路,锻炼了学生的创新能力和实践能力;在实现一个具有完善功能的高级程序设计语言编译器的过程中,每次迭代项目都要撰写一个项目实验报告,也锻炼了学生的总结分析能力。

3.2 持续性进行课程实践内容的迭代

重庆大学(以下简称我校)编译原理课程在近年来持续进行教学实践的改革,课程教学内容中实践部分的比重逐年增加,从实现编译器部分功能单元到实现完整编译系统软件,锻炼了学生的系统设计能力以及编写大程序的能力。编译原理课程迭代式项目教学方案见表 2

通过近年来的不断改革,编译原理课程有了以下改进。

1)实践教学内容难度逐年增大,学生要独立完成的功能也逐渐增加,从仅完成编译器前端部分到需要学生独立完成面向主流 CPU 架构的类 C 语言编译器。

2)对学生能力评价方式更加多样化,既有客观的 OJ 系统测试,也有教师评阅实验报告的评价。

3)通过系统能力大赛中编译原理系统设计大赛以赛代练,提升学生学习兴趣。

4)课程实践内容逐步拓展,覆盖主流的 CPU 架构,为今后进行弹性化教学实践打下基础。

4   多方向培养学生创新能力

编译原理课程教学目标是让学生掌握编译器的基本原理、技术和方法,而编译系统本身包含前端、中端及后端多个组成部分,是一个复杂工程问题,在编译器构造中既涉及软硬件结合,又涉及软件工程、软件优化等多方面的内容;编译器的构造既可以用工具软件快速开发,又可以通过教学内容让学生手动编写;结合“新工科”计算机专业“三创”人才培养以及我国信息产业实现“技术创新、自主可控”的目标,编译原理课程从多方面多方向来培养创新型人才[6-10]

1)以提升学生计算机系统能力为目标,夯实基础,理论结合实践,要求学生独立实现完整编译器;采用迭代式的实践方式,逐步提升学生分析与解决复杂问题的能力,培养学生养成科学的思维方法,为创新创业打下基础;另一方面建立学生编写大程序的信心,提升专业自信心和创业信心。

2)在课程教学过程中,教师通过引导启发学生发现并解决问题,基于课程教学内容进行算法改进等微创新活动;通过问题导向式教学、翻转课堂等多种教学方式来激发学生的学习兴趣,实现以核心教学内容为基础的微创新,提升学生的思维能力和创新能力。

3)面向国产芯片,以新型芯片即指令结构为基础,例如学生在计算机组成原理课程中自行实现的芯片指令集或者龙芯等我国具有自主知识产权的芯片指令集,设计开发新型编译器,既可提高学生系统能力,又能提升学生知识迁移和集合创新能力。

4)利用工具软件,借助编译技术,实现语言类应用程序开发,例如设计一门自己定义的编程语言或者其他语言类应用,培养学生应用型创新能力。

5   改革成效

我校计算机科学与技术专业从 2015 级开始培养学生可持续性竞争力以来,到 2019 级学生已能够独立在商品化的 MIPS CPU /ARM CPU 架构上完成简单的编译器设计并完成编码与测试;对毕业能力指标点的达成度也逐步提升,其中指标点 R1.5 0.85 提升到 0.97,指标点 R2.3 0.74 提升到 0.91,指标点 R4.1 0.84 提升到 0.99,指标点 R4.2 0.86 提升到 0.91

2019 级学生的编译原理课程实践完成情况为例,学生提交的代码量平均值为 6 416 行,代码测试总正确率平均值为 96.14%,实验总用时平均值为 385min

在实践中,学生共须完成 4 个实验,具体内容见表 3,这 4 个实验完成情况见表 4

综上,学生通过编译原理课程实践,初步具备了计算机系统软件的开放能力,在实践中还锻炼了大程序编写能力,从系统程序员的视角来看,其系统分析设计、软件工程及程序开发能力都得到了提升。

6   结 语

以培养计算机专业学生可持续竞争力为目标的教学改革取得了良好效果,希望能够为更大范围、更深层次的计算机系统课程改革探索提供一些启发与参考,促进计算机专业核心课程不断更新升级,为国家信息产业发展培养更多人才。

参考文献:

[1] 李未. 全面提高计算机学科高等教育质量: “互联网+”带来的机遇和挑战——中国科学院信息学部主任李未院士专访[J]. 计算机教育, 2016(1): 2-7.

[2] 计算机教育20人论坛报告编写组. 计算机教育与可持续竞争力[M]. 北京: 高等教育出版社, 2019.

[3] 中华人民共和国教育部. 教育部关于加快建设高水平本科教育全面提高人才培养能力的意见[EB/OL]. (2018-09-17)[2018-10-08]. http://www.moe.gov.cn/srcsite/A08/s7056/201810/t20181017_351887.html.

[4] 高小鹏. 计算机专业系统能力培养的技术途径[J]. 中国大学教学, 2014(8): 53-57.

[5] 徐晓飞, 李廉, 战德臣, . 未来工程教育形态:面向可持续竞争力的服务型教育[J]. 中国大学教学, 2019(5): 4-9.

[6] 中华人民共和国教育部. 教育部高等教育司关于开展新工科研究与实践的通知[EB/OL]. (2017-02-20)[2022-08-10]. http://www.moe.gov.cn/s78/A08/tongzhi/201702/t20170223_297158.html.

[7] 中华人民共和国教育部. 突破性进展历史性跃升: “十三五”高等教育主要成就[EB/OL]. (2020-12-03)[2022-12-03]. http://www.moe.gov.cn/fbh/live/2020/52717/sfcl/202012/t20201203_503062.html.

[8] 赵亮.创新创业教育与专业教育深度融合的高校课程体系重构: 基于理论与实践角度的分析[J]. 江苏高教, 2020(6): 83-88

[9] 李炎, 魏雪芬, 张健, . 创新教育课程教学模式改革对高校学生创新创业素质的提升[J]. 教育教学论坛, 2019(37): 127-128

[10]   董雷刚, 崔晓微. 新工科计算机专业三创人才进阶式培养模式研究[J]. 电脑知识与技术, 2021(17): 194-198.

基金项目:国家级新工科项目“深度融合三创能力提升的计算机类专业培养体系探索与实践”( E-JSJRJ202013352020-2023 )。

第一作者简介:张敏,女,重庆大学副教授,研究方向为智能感知、智能信息处理,zm@cqu.edu.cn

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

转自:“计算机教育”微信公众号

如有侵权,请联系本站删除!


  • 万维QQ投稿交流群    招募志愿者

    版权所有 Copyright@2009-2015豫ICP证合字09037080号

     纯自助论文投稿平台    E-mail:eshukan@163.com