CS383 Programming Languages
Course Summary
A small number of concepts underline the hundreds of programming languages that have been designed and implemented. This course introduces the concepts that serve as a basis for programming languages. It aims to provide the students with a basic understanding and appreciation of the various essential programming language constructs, programming paradigms, evaluation criteria and language implementation issues. The course covers concepts from functional, imperative, objectoriented,
logic programming and optionally scripting languages.
These concepts are demonstrated by incrementally adding
more features to a simple functional language called Lambda
Calculus to eventually arrive at a fullfledged, userfriendly
general purpose programming language. At the end of the
course, a number of modern programming languages from various
paradigms are presented as examples.
Latest News and Announcements
 Feb 25, 2018: Course Page reopens.
 Mar 5, 2018: Assignment 1 released, due next Monday.
 Mar 26, 2018: Released assignment 2, solutions to quizzes 1 and 2 as well
as tutorial 1.
 Apr 16, 2018: Assignment 3 released. Note that starting next week,
our lectures will be held on Monday and Wednesday afternoon.
Administrative Information
Lectures: Mon 16:0017:40, Thu 16:0017:40,
Dongshangyuan 107.
Instructor: Kenny Zhu
 SEIEE 03541 Phone: 34204592 Email: kzhu[at]cs[dot]sjtu[dot]edu[dot]cn
Office hours: by appointment via email or ask after class
Teaching Assistant:
Yuding Liang
Email: liangyuding[at]sjtu[dot]edu[dot]cn
Office hours: Thu 16:0017:00
Reference Textbooks:
 Programming Languages Principles and Paradigms by Allen Tucker and Robert Noonan, McGraw Hill / 200951 (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:
 Inclass quizzes: 10%
 Tutorial participation: 5%
 Assignments: 3040%
 Project: 25%
Project Website
 Exam (inclass test): 2030%
Schedule
Class  Date  Topic 
Slides  Resources  Homework 
1  02/28/2018 
Introduction  [pdf] 
Tucker Ch.1 

2  03/05/2018 
Inductive Definition and Proofs  [pdf] 
Harper Ch. 14 
hw1 (pdf)
hw1 (tex)
Quiz 1

3  3/12/2018 
Untyped Lambda Calculus  [pdf] 
Pierce Ch 5, 8, 9  
4  3/19/2018 
Tutorial 1  [pdf] 
Project description, Assignment 1 

5  3/26/2018 
Untyped Lambda Calculus (II), Simplytyped Lambda Calculus  [pdf]

Pierce Ch 5, 8, 9 
hw2 (pdf)
hw2 (tex)
Quiz 2

6  4/02/2018 
Extension to Simplytyped Lambda Calculus (I)  [pdf]

Pierce Ch. 11 
Quiz 3

7  4/10/2018 
Tutorial 2  [pdf]

Assignment 2 

8  04/16/2018 
Extension to Simplytyped Lambda Calculus (II) 
[pdf] 
Pierce Ch. 11 
hw3 (pdf)
hw3 (tex)

Copyright (c) Kenny Q. Zhu, 20122018.