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 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
- 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
Lectures: Mon 16:00-17:40, Wed 10:00-11:40,
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
Office hours: Thu 16:00-17:00 @ SEIEE 03-341
- 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%
Copyright (c) Kenny Q. Zhu, 2012-2019.