国防科学技术大学 编译原理国家级精品课程         
王挺
五十多年以来,随着编译技术的发展,有关编译原理和技术的内容被逐步引入到了计算机专业本科教学中。从早期各阶段 ACM 和 IEEE 的计算机专业教学计划,到后来的 Computing ’ 91 ,再到近年 ACM 和 IEEE 联合制定的 CC 2001 以及中国计算机学会、全国高校计算机教育研究会制定的 CCC2002 ,都把有关编译原理和技术的内容列入核心教学内容。目前本课程的内容覆盖了 CC2001 和 CCC2002 体系中程序设计语言 (PL) 领域 (area) 中的程序设计语言概述、虚拟机、语言翻译介绍和语言翻译系统等 4 个知识单元 (unit) 。详细信息参见本课程网站提供的 教学大纲(http://sei.nudt.edu.cn/cp/index.php?type=kczy&page=jxdg)。
编译原理课程是高等学校培养计算机专业人才的核心课程。本课程以介绍程序设计语言编译程序构造的基本原理和设计方法为教学目标。通过本课程的学习,一方面使学生掌握和理解编译系统的结构、工作流程以及编译程序各组成部分的设计原理和实现技术,获得分析、设计、实现和维护编译系统的初步能力;另一方面,通过学习编译的理论和方法,提高学生对程序设计语言、操作系统、计算机原理和体系结构等课程知识的综合理解。对于将来从事编译系统设计工作的学生来说,本课程的知识将为其打下坚实的能力和知识基础;对于从事其它工作的学生,本课程对于提高他们对计算机系统总体认识也具有重要的意义。此外,课程介绍的经典的语言分析方法和工具,对于设计一些实用的工具和软件,如自然语言理解、网络信息处理、网络协议的分析与实现等,都是必备的基础。
课程的重点、难点及解决办法

   
   课程的重点 包括: 编译过 程和编译程序的结构,文法的构造,正规表达式与有限自动机的等价性,有限自动机的确定化和最小化,消除文法的左递归和回溯,递归下降子程序的构造,预测分析表的构造,算符优先分析表和优先函数的构造, LR 分析表的构造,属性的计算,表达式和控制语句的翻译,名字的作用范围和栈式存储分配的实现, DAG 表示及其应用,循环优化,代码生成器的生成算法,依赖关系分析的基础理论以及向量化、并行化等。
    课程的难点 包括:正规表达式与有限自动机的等价性,有限自动机的确定化和最小化, LR 分析表的构造,属性的计算,表达式和控制语句的翻译,名字的作用范围和栈式存储分配的实现等。
针对上述教学重点和难点,课程小组在讲授过程中采取了如下措施,以提高课程学习的效果:
1) 注重理论和实践的结合 。编译程序的构造原理和技术可以说是计算机科学技术中理论和实践相结合的最好典范。在许多课程的教学中,经典的理论和先进的技术之间的联系往往缺乏具体而形象的例证,而编译原理课程在这方面具有得天独厚的优势。经典的形式语言和自动机理论为编译程序的设计提供了坚实的理论基础,正是在科学理论的保证下,才形成了一系列先进的编译程序设计方法和工具,使得编译程序的构造具有很高的系统性和自动化程度。本课程既强调了经典理论在计算机科学中的重要作用,又注重介绍利用这些基础理论来设计和构造编译程序的各模块的先进的方法及工具,具体形象地说明了基础理论与先进技术的关系。
2) 形式内容呼应,丰富教学手段 。本课程的建设以能力与素质的综合培养为目标,因此,课程采取了丰富的教学手段以培养学生综合运用知识的能力:课堂教学坚持采取讨论式、启发式教学方法,改变满堂灌的教学方式,活跃课堂气氛,激发学生的创新意识 , 提高教学效果;通过设计综合实验,为学生提供综合运用知识、培养科研素质的机会,锻炼了学生的自主性;综合实验的验收采取演示、讲解和答辩相结合方式,使学生的科研能力和人文素质得到全方位的锻炼;通过使用多媒体网络教学环境,学生与教师可以在课外进行流畅而生动的沟通,教师利用多媒体交互手段指导学生开展自学活动。
3) 建设系列课程,注重知识融合 。编译原理课程一直坚持按照计算机学院系列课程建设的目标来加强改革,课程知识点的安排力求体现系列课程建设的要求,充分考虑与相关课程在内容上的衔接和呼应。根据 CC2001 和 CCC2002 的知识点,理清本课程与程序设计、数据结构、算法设计与分析、操作系统和体系结构等相关课程的关系,确定本课程应该覆盖的知识点。同时,课程小组加强系列课程之间横向、纵向联系与分工的研究,协调本课程在计算机知识体系中与其它课程之间的关系,开设了一些配套课程与选修课程,对本课程知识进行完善与补充。根据系统软件、程序设计和软件工程等相关系列课程的发展和变化,更新并完善课程实验方案。
 实践教学的设计思想与效果
我校是国内最早开设编译原理综合实验的学校之一。本课程的实践教学环节充分体现了综合性、设计性和自主性的特色。 课程实践包括单元实验和综合实验两部分。其中,单元实验主要包括 LEX 、 YACC 和 JavaCC 等工具的分析和使用;综合实验包括简单的、包含现代程序设计语言典型成分的语言的编译器的分析和扩充等。其中综合性实验为整个实验的重点,所占比例超过 50% 。在综合实验中,学生以 PL 语言编译器为基础,扩充 PL 语言成分,并对相应的编译程序进行扩充,扩充的内容包括:基本的控制语句、函数的说明和使用、数据类型等。有关实践教学的详细信息请参见课程网站提供的 实验指导(http://sei.nudt.edu.cn/cp/index.php?type=kczy&page=syzd )。

课程实验要求学生综合应用程序设计、数据结构和算法、体系结构和计算机组成原理等课程的知识,在实践中贯彻软件工程的原则和规范,独立进行编译器的设计和实现,提交标准的软件文档和具有良好程序设计风格的源程序。
在完成综合实验的规定内容外,鼓励学生自主提出拟扩充的语言机制并独立设计实现,如新的数据类型和控制语句的扩充等,以培养学生自主研究的意识和能力。
通过课程的综合性实践,学生分析并扩充了一个较完整的编译程序,培养了学生通过灵活运用理论知识、设计较大规模的软件来解决实际问题的能力。通过课程学习和实践,学生深刻体会到了理论学习的意义和动手实践的乐趣。学生反映编译原理课程的实验系统性、综合性非常突出,在实验中不但极大地提高了动手实践的能力,而且也更深刻地体会到了计算机科学理论的作用和意义。

国防科学技术大学 编译原理国家级精品课程相关推荐

  1. 北京工业大学 编译原理 国家级精品课程

    北京工业大学 编译原理 国家级精品课程 蒋宗礼 北京工业大学为北京市属的国家"211工程"建设大学,旨在为北京市的建设培养高水平的工程应用型人才.计算机科学与技术专业致力于培养计算 ...

  2. 武汉理工大学 编译原理 校级精品课程

    武汉理工大学   编译原理校级精品课程 陈天煌 <编译原理>课程是理论性较强的课程.其特点是概念多.内容抽象.尤其是文法.形式语言及自动机的概念是计算机专业的理论学习和研究的基础.掌握这些 ...

  3. 03-04年度国家级精品课程一览

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 2003 ...

  4. java实验文法报告_西安邮电大学编译原理LL文法分析器实验(java).doc

    西安邮电大学编译原理LL文法分析器实验(java) <编译原理>实验报告 题目: 语法分析器的制作 学生姓名: 班 级: 软件1202 学 号: 指导教师: 成 绩: 西安邮电大学计算机学 ...

  5. 作者:牛新(1983-),男,博士,国防科学技术大学并行与分布处理重点实验室助理研究员...

    牛新(1983-),男,博士,国防科学技术大学并行与分布处理重点实验室助理研究员,主要研究方向为计算机系统结构.遥感图像处理.机器学习.

  6. 作者:窦勇(1966-),男,博士,国防科学技术大学并行与分布处理重点实验室常务副主任、研究员、博士生导师...

    窦勇(1966-),男,博士,国防科学技术大学并行与分布处理重点实验室常务副主任.研究员.博士生导师,计算机系统结构学科方向学术带头人,担任中国计算机学会体系结构专家委员会主任,是国家自然科学基金杰出 ...

  7. 作者:曹玉社(1990-),男,国防科学技术大学并行与分布处理重点实验室硕士生...

    曹玉社(1990-),男,国防科学技术大学并行与分布处理重点实验室硕士生,主要研究方向为计算机系统结构.遥感图像处理.机器学习.

  8. 作者:张鹏(1993-),男,国防科学技术大学并行与分布处理重点实验室硕士生...

    张鹏(1993-),男,国防科学技术大学并行与分布处理重点实验室硕士生,主要研究方向为计算机系统结构.遥感图像处理.机器学习.

  9. 作者:江荣(1984-),男,博士,国防科学技术大学助理研究员。

    江荣(1984-),男,博士,国防科学技术大学助理研究员,主要研究方向为隐私保护和网络信息安全.

最新文章

  1. YII显示sql进行调试
  2. 英文句子改写在线软件_试完这些英文论文写作辅助神器,你会发现新大陆der~...
  3. html5应用测试方法,详解html5的video标签测试应用
  4. windows7 下vs2015使用opencv3.30、opencv_contrib库
  5. C/C++网络编程中的TCP保活
  6. 小苏打到底能不能碱化尿液
  7. 发现一个增长天翼手机待机时间的方法
  8. 牛客挑战赛47 A 一道GCD问题
  9. 修改mysql文件的存储路径
  10. BestCoder22 1003.NPY and shot 解题报告
  11. 每日站立会议 12.06
  12. html状态栏透明,HTML – 如何使我的导航栏略微透明?
  13. PHPExcel基本使用(2) 导入图片
  14. 福气太薄,刚积攒了点又被自己扔了
  15. Unity3D学习笔记(2)脚本创建以及执行过程概述
  16. 博弈论模型(巴什博弈)
  17. js / vue 批量打印二维码图片、PDF、文档
  18. WEB-互补色与对比色的计算与获取 (实用、赞)
  19. 黑崎一护为什么没有和朽木露琪亚在一起
  20. 解析KDTCN:知识图谱和深度学习模型联合实现股票预测

热门文章

  1. html css圆角按钮,CSS:CSS使用滑动门技术实现圆角按钮
  2. 用友nc57 调用存储过程
  3. 多可文档管理系统下载文件的几种方式
  4. 《matlab径向基神经网络》底层实现原理(上)
  5. Birch聚类算法的实现
  6. YUVPlayer1.3的使用
  7. 基于springboot的外星人官方笔记本商城(序言)
  8. 虚拟机centos7执行ip addr命令看不到ip地址
  9. CentOs 无法启动网络,用ip addr看不到IP地址
  10. Android官方开发文档Training系列课程中文版:打印内容之HTML文档打印