• Programming Languages
    • School of Electronic, Information and Electrical Engineering
    • Credit. 3
    • CS383
    • Enroll
    • Fall , 2015
    • 1967
    • 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
  • Computer Graphics
    Computer Graphics
    With the development of computer hardware, especially graphics display devices, computer graphics has becoming an important and young subject of computer science. In the computer, because of the advan...
    Ma Lizhuang
  • Modern Control Theory
    Modern Control Theory
    This is a fundamental course on the modern theory of dynamical systems and control. Fundamental concepts of modern control theory are covered, including systems modeling and solutions in state space, ...
    Bao Qilian
  • Fundamental of Optoelectronics
    Fundamental of Optoelectron...
    Course content: This course includes wave optics basics, waveguides, semiconductor devices, stimulated emission lasers, detectors, modulators, photovoltaic devices, optical sensor, medical photonics...
    Jiang Chun
  • Database System Technology
    Database System Technology
    This course is a first course in database systems for undergraduates at SJTU/CS. It covers the fundamantal concepts of modern database management including database design, database languages and data...
    Kenny Qili Zhu
  • 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
  • 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
  • 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, ...
    Dong Xiaoju
  • Fiber Broadband Communications Network
    Fiber Broadband Communicati...
    This course focuses on key optical components, optical transmission systems, optical networks, and application of fiber communication technologies, train the students to understand the basic principle...
    Ma Lin
  • 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

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