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
- Homework 30
- Project 20
- Final exam 50
Topics
- Introduction to programming languages
- Reasons for studying programming language concepts
- Evolution of major programming languages
- Programming paradigms
- Compilation vs. interpretation
- Object-oriented programming & Java
- Logic and constraint programming
- Functional programming and Haskell
- Lambda calculus
- Types and type expressions
- High-order functions
- The Hugs compiler
- Final exam: Dec. 9, 2:00-3:30.
- Project presentations (Dec. 16)