课程名称 (Course Name) :程序语言理论 (Principles of Programming Language )
课程代码 (Course Code):X037515
学分/学时 (Credits/Credit Hours): 3/48
开课时间 (Course Term ): fall
开课学院(School Providing the Course): 软件学院(School of Software)
任课教师(Teacher): 蔡小娟 (Xiaojuan Cai)
课程讨论时数(Course Discussion Hours):
课程实验数(Lab Hours): 0
课程内容简介(Course Introduction):
本课程的总体目标是让学生了解类型与程序语言的基本理论、方法和现有成果。我们将以函数式语言为载体,介绍计算机科学中的类型理论及其在程序语言中核心作用。主题包括无类型Lambda演算、简单类型系统、类型推导、带全称量词的类型、子类型、递归类型等。每一个主题都在实际程序语言中有所体现,其中子类型和递归类型部分,本课程还将详细介绍它的实现难点。
The purpose of this course is to introduce the basic principles, methods, and results of types and programming languages to graduate students. It provides a comprehensive introduction both to type systems in computer science and to the basic theory of programming languages. The approach is pragmatic and operational; each topic is motivated by programming examples and the more theoretical sections are driven by the needs of implementations.
The topics include the untyped lambda-calculus, simple type systems, type reconstruction, universal and existential polymorphism, subtyping, bounded quantification, recursive types, kinds, and type operators.
教学大纲(Course Teaching Outline):
| Topics | hours | 
| Introduction and operational semantics | 4 | 
| Introduction to Ocaml language | 4 | 
| Untyped lambda calculus | 4 | 
| Simple type system and simply typed lambda calculus | 
 | 
| Type safety 
 | 4 | 
| Universal types and existential types 
 | 4 | 
| Type reconstruction 
 | 4 | 
| Subtyping and its meta theory | 6 | 
| Recursive types and co-induction technique | 6 | 
| Type operators and kinds | 4 | 
课程进度计划(Course Schedule):
| Topics | 
 | 
| Introduction | Lecture 1 | 
| Introduction to Ocaml language | Lecture 2 | 
| Untyped lambda calculus | Lecture 3 | 
| Simple types | Lecture 4 | 
| Type safety 
 | Lecture 5 | 
| Universal types and existential types 
 | Lecture 6 | 
| Type reconstruction 
 | Lecture 7 | 
| Subtyping and its meta theory | Lecture 8 | 
| Recursive types and co-induction technique | Lecture9& Lecture 10 | 
| Type operators and kinds | Lecture 11 | 
课程考核要求(Course Assessment Requirements):
最后的分数由平时作业和期末笔试组成,期末考试为闭卷
final score = 30%homework + 70% final exam (close-book)
参考文献(Course References):
Benjamin C. Pierce. Types and Programming Languages. The MIT Press. ISBN 0-262-16209-1.
预修课程(Prerequisite Course)
Principles of Compilers