Course personnel | Textbooks | Readings | Schedule | Links
Course personnel
Instructor | Phone | Course Time | Place | |
Yu Zhang | 63603804 | yuzhang at ustc.edu.cn | Tuesday 9:45~12:10 | 3412 |
git repositories
The IP address and port number of the git repo server are: 202.38.79.111:13022. For easy use, you can first add the following settings to your ~/.ssh/config Host projgit HostName 202.38.79.111 Port 13022 User git IdentityFile ~/.ssh/idrsa After that you can fetch it to your own machine by performing: git clone git@projgit:SAXXXXXXXX. You can also directly use the command below to clone git clone ssh://git@202.38.79.111:13022/SAXXXXXXXXSchedule
Final Exam
3A109, 9:00-11:00 Jan.7,2019Q&A Session
3A105, 15:00 Jan.4,2019Programming Assignment
Type System(Due: Jan 6,2019)Part II: Formal Semantics
- Dec.11:
Hoare Logic
, Monad (Monads in pictures) [PFPL] - Dec.4:
Subtyping
, Control Flow [PFPL] - Nov.27:
Polymorphisms
, Overloading and Type Classes [PFPL] - Nov.20:
General Recursion
, Type and Propositions , Polymorphisms(P1-7) [PFPL] - Nov.13:
Typed lambda calculus and Algebraic Data Types
[PFPL], interpreter.ml - Nov.6:
Fundamentals (P16-)
, OCaml (code.ml, Cornell CS 3110: Data Structures and Functional Programming)
Ref. Learn X in Y Minutes - OCaml, Real World OCaml - Oct.30:
Fundamentals (P1-15)
Part I: Static Program Analysis
- Dec.11:
Symbolic Execution
, e.g. Sym-While - Oct.30:
Pointer Analysis
- Oct.23:
Interprocedural Analysis
, Control Flow Analysis , Pointer Analysis
Homework: HW6 - Oct.16: Widening and Narrowing
, Path Sensitivity , Interprocedural Analysis (P1-19)
Homework: HW5 - Oct.9: Lattices and Fixpoints
, Examples of Flow Sensitive Analyses
Homework: HW4 - Sept.25: Type analysis and the unification solver
, Lattices (P1-13) (TIP-GitHub)
Homework: HW3 - Sept.18: Introduction to program analysis and TIP
, Type analysis and the unification solver (TIP-GitHub) - Sept.11: Course Info
(6in1), Review of Compilers (6in1)
Homework: HW1
Textbooks
- [PPA] Flemming Nielson et al. Principles of Program Analysis (2nd Edition). Springer, 2005.
- [SPA]
Anders Møller and Michael I. Schwartzbach.
Lecture notes on Static Program Analysis, Sept. 2018.
- [PFPL] Robert Harper. Practical Foundations for Programming Languages. 2nd Edition, Cambridge University Press, 2016.
- [TPL]陈意云、张昱.
程序设计语言理论(第2版).高等教育出版社, 2010.
- [TAPL]
B. C. Pierce.
Types and Programming Languages. MIT Press, 2002.
CIS 500: Software Foundations - Fall 2007
马世龙等译. 类型和程序设计语言.电子工业出版社,2005. -
John C. Mitchell.
Foundations for Programming Languages. MIT Press, 1996.
许满武等译. 程序设计语言理论基础.电子工业出版社,2006.
- B. C. Pierce. Advanced Topics in Types and Programming Languages. MIT Press, 2005.
Supplementary Readings
- C.A.R. Hoare. Hints on programming language design. Stanford University. Technical Report: CS-TR-73-403. 1973.
- Niklaus Wirth(Pascal之父). On the Design of Programming Languages. Information Processing. 74, pages 386-393, New York, N.Y., 1974. North-Holland Publishing Co.
- Peter Wegner. Programming languages - the first 25 years. IEEE Transactions on Computers, Vol. C-25, No. 12, pp. 1207-1225, 1976.
- Guy L. Steele.
Growing a Language. OOPSLA 1998 Keynote.
- C.A.R. Hoare. An axiomatic basis for computer programming. CACM 12(10), 1969, pages 576 - 580.
- Leslie Lamport. The Future of Computing: Logic or Biology.
- Philip Wadler. Proofs are Programs: 19th Century Logic and 21st Century Computing. June 2000, updated November 2000.
- ......
Schedule
Links
- System Software and Software Security Lab, USTC
- The Teaching About Programming Languages Project
- ACM SIGPLAN(ACM Special Interesting Group on Programming Languages)
- Lambda the Ultimate
- PLT Online
- Resources for Programming Language Research, CMU
- HyperNews Computing Languages List