- Feb 24, 2019: Course Page re-opens.
- Mar 4, 2019: Assignment 1 released, due Mar 7, in 03-341.
- Mar 7, 2019: For assignments, please always submit hard, preferrably printed copies either to me during class, or to the TA office if the due date is not a lecture day. If programming is involved in the assignment, you will be instructed to submit code via email in the assignment sheet.
- Mar 7, 2019: Only 10 people have submitted the assignments to Mengxue today. Please be reminded that, you will get 30% deducted for each day late for the assignment.
- Mar 18, 2019: Assignment 2 released.
- Mar 27, 2019: Assignment 3 released. Due next Monday. Sorry for the delay!
- Mar 27, 2019: The new TA is Bran, and he can be contacted at 2275135452[at]qq.com.
- Apr 10, 2019: Assignment 4 released. Due this Friday.
- Apr 15, 2019: Project description released below!
- Apr 16, 2019: Assignment 5 released. Due this Friday. Please be reminded that starting next week, CS383 will be held both on Monday and Wednesday! Check your class schedule for details.
- Apr 24, 2019: Assignment 6 released.
- Apr 30, 2019: Assigmment 7 released. Next class will be on Monday. I will give a lecture instead of a tutorial. Tutorial will be given on next Wednesday instead.
- May 6, 2019: Assignment 8 released. Next class will be tutorial on Wednesday.
- May 13, 2019: Assignment 9 released.
- May 21, 2019: Assignment 10 released.
- May 23, 2019: We will add another tutorial on next Monday to discuss all the quizzes so far. After that we will have three consecutive lectures. On the 16th week, we will have a final tutorial and our exam will be on Wednesday.

**Lectures**: Mon 16:00-17:40, Wed 10:00-11:40,
Dongzhongyuan 3-103.

**Instructor**: Kenny Zhu
- SEIEE 03-407 Phone: 3420-4592 Email: kzhu[at]cs[dot]sjtu[dot]edu[dot]cn

Office hours: by appointment via email or ask after class

**Teaching Assistant**:
Bran Li

Email: likaijian[at]sjtu[dot]edu[dot]cn

Office hours: Thu 16:00-17:00 @ SEIEE 03-341

**Reference Textbooks**:

- Programming Languages Principles and Paradigms by Allen Tucker and Robert Noonan, McGraw Hill / 2009-5-1 (Also published by Tsinghua University Press and
available at the University Textbook Office).

- Practical Foundations for Programming Languages by Robert Harper, Cambridge University Press.

- Types and Programming Languages by Benjamin C. Pierce, The MIT Press.
- Programming Languages: Application and Interpretation by Shriram Krishnamurthi, Brown, Online.

**Assessment**:

- In-class quizzes: 10%
- Tutorial participation: 5%
- Assignments: 30-40%
- Project: 25% Project Website
- Exam (in-class test): 20-30%

Class | Date | Topic |
Slides | Resources | Homework |

1 | 02/28/2019 | Introduction | [pdf] | Tucker Ch.1 | |

2 | 03/04/2019 | Inductive Definition and Proofs | [pdf] | Harper Ch. 1-4 | hw1 (pdf) hw1 (tex) |

3 | 3/11/2019 | Tutorial 1 | [pdf] | Assignment 1 | |

4 | 3/18/2019 | Untyped Lambda Calculus | [pdf] | Pierce Ch 5, 8, 9 | hw2 (pdf) hw2 (tex) |

5 | 3/26/2019 | Untyped Lambda Calculus (II), Simply-typed Lambda Calculus | [pdf] | Pierce Ch 8, 9 | hw3 (pdf) hw3 (tex) |

6 | 4/1/2019 | Tutorial 2 | [pdf] | Assignment 2 and 3 | |

7 | 4/8/2019 | Extension to Simply-typed Lambda Calculus (I) | [pdf] | Pierce Ch. 11 | hw4 (pdf) hw4 (tex) |

8 | 04/16/2019 | Extension to Simply-typed Lambda Calculus (II) | [pdf] | Pierce Ch. 11 | hw5 (pdf) hw5 (tex) |

8 | 4/12/2019 | Tutorial 3 | [pdf] | Assignment 4 and 5 | |

9 | 04/24/2019 | Going Imperative | [pdf] | Pierce Ch. 12 | hw6 (pdf) hw6 (tex) |

11 | 04/29/2019 | Memory Management | [pdf] | Tucker Ch. 11 | hw7 (pdf) hw7 (tex) |

12 | 05/03/2019 | Type Inference (I) | [pdf] | Pierce Ch. 22, 23 | hw8 (pdf) hw8 (tex) |

13 | 05/08/2019 | Tutorial 4 | [pdf] | Assignment 6 and 7 | |

14 | 05/13/2019 | Type Inference (II) | [pdf] | Pierce Ch. 22, 23 | hw9 (pdf) hw9 (tex) |

15 | 05/15/2019 | Tutorial 5 | [pdf] | Assignment 7-8 | |

16 | 05/14/2019 | Subtyping | [pdf] | Pierce Ch. 15 | hw10 (pdf) hw10 (tex) |

17 | 06/22/2019 | Tutorial 6 | [pdf] | Assignment 9 |