CS383 Programming Languages
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, object-oriented,
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 full-fledged, user-friendly
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 re-opens.
- 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.
Lectures: Mon 16:00-17:40, Thu 16:00-17:40,
Instructor: Kenny Zhu
- SEIEE 03-541 Phone: 3420-4592 Email: kzhu[at]cs[dot]sjtu[dot]edu[dot]cn
Office hours: by appointment via email or ask after class
Office hours: Thu 16:00-17:00
- 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.
- In-class quizzes: 10%
- Tutorial participation: 5%
- Assignments: 30-40%
- Project: 25%
- Exam (in-class test): 20-30%
||Inductive Definition and Proofs||[pdf]
||Harper Ch. 1-4
||Untyped Lambda Calculus||[pdf]
||Pierce Ch 5, 8, 9||
||Project description, Assignment 1
||Untyped Lambda Calculus (II), Simply-typed Lambda Calculus||[pdf]
||Pierce Ch 5, 8, 9
||Extension to Simply-typed Lambda Calculus (I)||[pdf]
||Pierce Ch. 11
||Extension to Simply-typed Lambda Calculus (II)
||Pierce Ch. 11
Copyright (c) Kenny Q. Zhu, 2012-2018.