Programming Languages and Their Implementation

Prof. Neng-Fa Zhou

Course Description

In this course, we will learn the essential programming language concepts and conduct case studies of the implementation techniques. The programming paradigms covered will include Object-Oriented Programming, Logic & Constraint Programming, and Functional Programming. The systems to be studied will include the Java Virtual Machine, the Warren Abstract Machine for Prolog, and the Hugs compiler for Haskell. It is impossible to learn the depths of all the topics in one course. Nevertheless, each student will be required to conduct a project to explore one of the topics on his/her own.

Reference books and Resources

  • Programming language: Robert W. Sebesta, Concepts of Programming Languages, Fifth Edition, Addison-Wesley, 2002.
  • Java: Language Specification , API , Tutorial , JVM.
  • Logic & Constraint Programming: Logic Programming , Constraint Programming , B-Prolog, Warren Abstract Machine , The Art of Prolog
  • Haskell: Haskel , The Haskell School of Expression: Learning Functional Programming through Multimedia
  • Advice on Research and Presentation

    Grading Procedure

    Project assignment

    Homework assignments

    Topics

    1. Introduction to programming languages
      • Reasons for studying programming language concepts
      • Evolution of major programming languages
      • Programming paradigms
      • Compilation vs. interpretation
    2. Object-oriented programming & Java
    3. Logic and constraint programming
    4. Functional programming and Haskell
      • Lambda calculus
      • Types and type expressions
      • High-order functions
      • The Hugs compiler
    5. Final exam: Dec. 9, 2:00-3:30.
    6. Project presentations (Dec. 16)