• Programming Languages
    • School of Electronic, Information and Electrical Engineering
    • Credit. 3
    • CS383
    • Enroll
    • Fall , 2015
    • 1923
    • Course Description:
    • ( Exchange Programme )
    • A small number of concepts underline the hundreds of programming languages that have been designed, implemented and practiced. This course introduces the concepts that serve as a basis for modern programming languages. It aims to provide the students with a basic understanding and appreciation of the various essential programming language constructs and properties, programming language semantics, programming paradigms, and language implementation issues. The course is centered around Lambda Calculus and evolves by incrementally adding important language features and elements to the core language. The course covers concepts from functional, imperative, object-oriented and logic programming languages. At the end of the course, you will be able to design and implement your own full-fledged programming language!
    • Course Syllabus:
    • After completing the course, students should be able to:
      1. inductively define the syntax and semantics of programming languages
      2. inductively proof mathematical properties
      3. master essential language constructs
      4. understand type theory and type inference
      5. understand memory management principles
      6. be acquainted with representative languages in functional, imperative, objective oriented and logic programming languages.
      7. Design and implement the syntax and semantics of a simple programming language with type inference and garbage collection features.
    • Schedule:
    • Topics / Credit hours / Teaching methodology / Tasks / Intended learning outcomes / Assessment methods

      1. Inductive definitions and Proofs / 6 Credit hours / Lecture & Tutorial / Assignment / Null / Assignment & Tutorial
      2. Untyped Lambda Calculus / 4 Credit hours / Lecture & Tutorial / Assignment / Null / Assignment & Tutorial
      3. Simply typed Lambda Calculus / 8 Credit hours / Lecture & Tutorial / Assignment / Null / Assignment & Tutorial
      4. Imperative Lambda Calculus / 4 Credit hours / Lecture & Tutorial / Assignment / Null / Assignment & Tutorial
      5. Memory Management / 2 Credit hours / Lecture & Tutorial / Assignment / Null / Assignment & Tutorial
      6. Type Inference / 6 Credit hours / Lecture & Tutorial / Assignment / Null / Assignment & Tutorial
      7. Subtyping / 4 Credit hours / Lecture & Tutorial / Assignment / Null / Assignment & Tutorial
      8. Programming Paradigms / 8 Credit hours / Lecture & Tutorial / Assignment / Null / Assignment & Tutorial
      9. Project / 2 Credit hours / Tutorial / Project / Null / Project report and presentation
  • Reading list
  • Other Materials
  • Discussion
  • Homework download/submit
    • Kenny Qili Zhu
    • Associate Professor
    • Read more
    • Male
    • E-mail:
    • kenzhu@sjtu.edu.cn
    • Profile
    • Kenny Qili Zhu is an Associate Professor and Distinguished Research Professor at Department of Computer Science and Engineering at Shanghai Jiao Tong University. He graduated with B.Eng (Hons) in Electrical Engineering in 1999 and PhD in Computer Science in 2005 from National University of Singapore. His PhD advisors were Joxan Jaffar and Roland Yap. He was a postdoctoral researcher and lecturer from 2007 to 2009 in the programming language group at Princeton University working on the PADS project with David Walker from Princeton and Kathleen Fisher from AT&T Labs. Prior to that , he was a software design engineer in the Windows Live Identity group of Microsoft in Redmond, WA. From Feb 2010 to Aug 2010, he was a visiting professor at Microsoft Research Asia in Beijing. Kenny was the winner of the 2013 Google Faculty Research Award and DASFAA 2014 Best Paper Award.
  • Prerequisite Course:


  • Textbooks:

    1. Benjamin C. Pierce, Types and Programming Languages The MIT Press.
    2. Robert Harper, Practical Foundations for Programming Languages Cambridge University Press.
    3. Programming Languages Principles and Paradigms by Allen Tucker and Robert Noonan, McGraw Hill / 2009-5-1
  • Grading:

    Assignments + Tutorial Participation + Project + Exam
Other courses
  • Fundamental Circuit Theory
    Fundamental Circuit Theory
    Fundamental Circuits is the fundamental course for all students majoring in electrical engineering. Course objective:The aim and task for this course is to make students grasp the circuits’ concepts ...
    Li Dan
  • Inspect Technology (A)
    Inspect Technology (A)
    This course is part of the developments of existing National Excellent Course - "Inspection Technology". English is the only classroom language. The course is one of the mandatory elective courses to ...
    Ma Yixin
  • C++ Programming
    C++ Programming
    This course introduces and emphasizes object-oriented programming (OOP). OOP is a currently popular and powerful programming technique. The main characteristics of OOP are encapsulation, inheritance, ...
    Yao Tianfang
  • Software Engineering
    Software Engineering
    Software engineering is the branch of computer science that creates practical, cost-effective solutions to computing and information processing problems, preferentially by applying scientific knowledg...
    Sheng Bin
  • Multicore Architecture and Parallel Computing
    Multicore Architecture and ...
    Multi-core era is here to stay and many programmers will be developing parallel software. But still not everyone is trained in parallel programming. In this course, students will study the state-of-ar...
    Jiang Li
  • Digital Electronics Technology
    Digital Electronics Technol...
    This course is designed to teach the students the fundamentals of digital circuits, including basic concepts, principles, and the basic methods for circuit analysis and design. Upon completion of the ...
    Bao Qilian
  • Digital Signal Processing
    Digital Signal Processing
    Digital signal processing is a new-rising subject. It’s developing rapidly now and widely applied to many fields of science and engineering. It’s important knowledge for all informatics workers. As a ...
    Wu Kan
  • Technology of Electromagnetic Compatibility (EMC)
    Technology of Electromagnet...
    It takes 8 weeks with class lecture in the first 7 weeks, and in the last week there is an experiment. The final score is based on the attendance and final exam. The international students can finish ...
    Zhao Gang
  • Computability Theory
    Computability Theory
    Computability theory, also called recursion theory, is a branch of computation theory in theoretical computer science. It is the foundation of algorithm design and analysis. It briefly introduces the ...
    Gao Xiaofeng

Shanghai Jiao Tong University The English Course Catalog | School Counseling:021-34206468-102

沪ICP备05052060 © Shanghai Jiao Tong University all rights reserved. | Address: 800 Dongchuan Road, Shanghai