课程信息
程序设计方法学
课程代码 21190650
课程英文名称 Programming Principle
开课学院 计算机科学与技术学院
学分 2.0
周学时 2.0-0.0
权重系数 1.0
课程归属
预修要求 程序设计基础、面向对象程序设计、(要求同时选修“Java应用技术”或自学Java编程,计算机组成、编译原理对本课程的学习有帮助)
课程简介
教学大纲

二、教学目标

(一)学习目标

国内大学对于编程语言的研究甚少,也几乎没有开设类似课程。本课程希望能给学生更广阔的视角来理解计算机科学,对于计算机的基础性研究方向有所涉猎和关注,培养对于基础研究的兴趣。

同时,对于将来从事编程工作的学生,本课程能使他们深入理解编程语言,理解编程语言的实现,理解各种编程范式,对于写出更高质量的程序是大有裨益的。

通过编写自己的函数式语言解释器,学生们一方面充分理解了函数式编程,一方面也锻炼了大型程序的编写(至少5000行代码),对于编程能力的提升是很有好处的。

(二)可测量结果

1.  理解语言的概念、语法与语义的不同

2.  了解编程语言的发展历史和当前研究方向

3.  掌握用BNF和EBNF来描述语言和推导语句

4.  理解命令式、函数式和逻辑式语言的定义和特点

5.  理解程序执行的编译和解释两种方式

6.  掌握变量的名-值关系、类型、运算与实现(包括编译和解释)

7.  掌握命令式语言中的控制结构及编译实现

8.  掌握函数的实现,尤其是局部空间的实现

9.  理解结构化、面向对象、基于构件、泛型四种设计范式的定义和特点

10.理解虚拟机机制,了解JVM的实现机制

11.理解函数式编程概念和常用手段

12.理解并行计算概念和常用手段

13.掌握递归计算概念和常用手段

其中,当前研究方向通过论文阅读、论文分享报告和文献综述来考察;对函数式编程模式和程序解释执行的掌握通过解释器大程序来考察;其他内容通过单元小作业和期末考试来考察。

三、课程要求

(一)授课方式与要求

1. 听课

2. 论文阅读、撰写文献综述(个人完成)

3. 课内的论文分享(以小组为单位)

4. 单元小作业(个人完成)

5. 编写函数式语言的解释器(个人完成)

6. 期末考试

(二)考试评分与建议

1.     单元小作业:20%

2.     文献综述:15%

3.     论文分享报告:5%

4.     解释器:30%

5.     期末考试:30%

    

四、教学安排

第一单元:编程语言基本概念

1.  引言:什么是语言,什么是编程语言,什么是语法,什么是语义,什么是正确的语句

2.  历史:编程语言发展的历史和当前的研究方向

3.  语法:BNF和EBNF

4.  讲解大作业的MUA语言

单元作业:

1.  用BNF表述语言

2.  文献搜索,确定综述方向

第二单元:编程语言基本元素

1.     变量:名-值关系与编译、解释实现,类型

2.     表达式计算:正交原则

3.     控制与子程序:控制语句的实现、子程序调用返回的实现、本地空间的实现

单元作业:

1.  理解编译结果(汇编级)

2.  论文阅读分享报告

3.  MUA解释器的第一阶段设计

第三单元:编程语言设计范式与实现

1.  结构化程序设计:什么是结构化里的结构

2.  面向对象程序设计:理解与实现

3.  基于构件的程序设计:理解与实现

4.  了解面向接口的设计

5.  泛型程序设计:理解与实现

6.  虚拟技术与虚拟机实现:以JVM为例

单元作业:

1.  实现一个构件机制

2.  文献综述

3.  MUA解释器的第二阶段设计

第四单元:函数式计算、并行计算和递归计算

1.  函数式计算

2.  并行计算

3.  递归计算:以MUA语言为例

单元作业:

1.  小规模程序设计

2.  完成MUA解释器

时间表

周次

授课主题

备注

1

语言的基本概念(讲授)/布置论文阅读

2课时

2

编程语言的发展历史和研究现状(讲授)

2课时

3

语法定义(讲授)

2课时

4

论文阅读方向(讨论)

1课时

MUA语言讲解、布置第一阶段目标

1课时

5

变量、汇编代码阅读(讲授)

2课时

6

表达式(讲授)/论文阅读分享(讨论)

2课时

7

控制(讲授)/论文阅读分享(讨论)

2课时

8

子程序(讲授)/论文阅读分享(讨论)/MUA第二阶段目标

2课时

9

结构化程序设计与面向对象程序设计(讲授)/论文阅读分享(讨论)

2课时

10

基于构件与泛型(讲授)/论文阅读分享(讨论)

2课时

11

虚拟机技术与JVM(讲授)/论文阅读分享(讨论)

2课时

12

JVM实现(讲授)/论文阅读分享(讨论)/MUA第三阶段目标

2课时

13

函数式编程(讲授)/论文阅读分享(讨论)

2课时

14

并行计算(讲授)/论文阅读分享(讨论)

2课时

15

递归计算(讲授)/论文阅读分享(讨论)

2课时

16

小结及复习(讲授与互动)

2课时

备注:

1. 第4周前,每位同学要独立提交自己搜索到的论文和准备做的综述方向。第4周课内挑选20位同学做方向分享,使用45分钟。之后要组成20个学习小组;

2. 从第6周到第15周,每周有两个小组做论文阅读分享报告,使用20-30分钟。

五、参考教材及相关资料

1. 《编程语言原理(第10版)》,[美]Robert W. Sebesta著,马跃等译,清华大学出版社,2013年,ISBN 978-7-302-31112-6

2. 《程序设计语言——实践之路》,[美]Michael L. Scott著,韩江等译,电子工业出版社,2012年,ISBN 978-7-121-17067-6

3. 《编程语言实现模式》,[美]Terence Parr著,李袁奎译,华中科技大学出版社,2012年,ISBN 978-7-5609-7700-3

4. 《程序设计语言的形式语义》,[美]Glynn Winskel著,宋国新等译,机械工业出版社,2005年,ISBN 978-7-111-13153-3

5. 《计算机程序的构造和解释》,[美]Harold Abelson等著,裘宗燕译,机械工业出版社,2012年,ISBN 978-7-111-13510-4

六、课程教学网站:

(仅限校网访问)

                                                      (要求至少A4纸4页)


英文课程简介
英文教学大纲
浙江大学教务处 版权所有