CSC 530: Programming Languages and Translators
with treatment of
Comparative Computational Religions




Instructor
Gene Fisher (gfisher@thyme)
Office: 14-210
Office Hours: MWF 9-10, Tu 9-11
Prerequisites
Objectives
Course Materials

There is a course reader consisting of a collection of papers on the principles of programming languages. The reader will be available at the book store starting the 2nd week of class. A table of contents for the reader is among the first-day handouts. Other course materials will be handed out in class and available online in the master class directory at


http://www.csc.calpoly.edu/~gfisher/classes/530

A good deal of your course work will be done using the Lisp programming language. A Lisp primer is among the first-day handouts. It covers all of the language basics you'll need for the assignments. There is a splendid online version of the complete Common Lisp reference manual in the 530 documentation directory


530/doc/lisp-reference

You can view it in HTML or PDF formats, and print out any portions of it you like. You can purchase a hardcopy in book from your favorite online outlet, using the ordering information in

530/doc/lisp-reference/Digital-Press/README

Class Work

There are three initial homework assignments required of everyone. These assignments consist of two Lisp programming exercises and a formal semantics problem set. For the second part of the class work, you may choose between two additional homework assignments or one larger project.

There are no examinations. The final exam hours will be devoted to a public debate on some controversial topic related to programming language design. Details of the debate topic will be discussed in due course. Some Details of the Homework Assignments

  1. A Lisp interpreter in Lisp.
  2. Addition of type checking to the interpreter of assignment 1.
  3. Formal semantics problem set number 1.
  4. Addition of module and object-oriented constructs to the interpreter of assignment 2.
  5. Addition of two advanced features to the interpreter of assignment 4; the features are overloading, inheritance, generics, lazy evaluation, and memorization.
  6. Formal semantics problem set number 2.
Some Details of the Larger-Scale Design and Implementation Projects

Fisher has been working on a formal specification language for the last several years which he uses in CSC 205 and 508. It's called RSL (Requirements Specification Language). The language is in need of some work in the following ares:

  1. design improvements, including formal semantic definition
  2. features for defining and evaluating attribute grammars
  3. upgrades to the type checker
  4. a functional interpreter
  5. a dataflow interpreter
  6. a rewrite-rule interpreter
  7. linkage to an existing theorem prover
Each of these areas is suitable for a class project. Projects can be done individually or in groups of two or more people. Working on a project will include a summary presentation of your work to the class at the end of the quarter. Computer Accounts

We will use the CSL falcon and hornet machines. If you need a falcon account, please so indicate on the first-day class roster. Overview of Lecture Topics

Week 1: Introduction to the course, functional programming, and Lisp

Week 2: More on functional programming; discussion of assignment 1

Week 3: Introduction to programming language type systems

Week 4: More on type theory; introduction to typing in ML; discussion of assignments 1 and 2

Week 5: Introduction to formal semantics; attribute grammar semantics

Week 6: More on attribute grammars; discussion of assignment 3

Week 7: Denotational semantics

Week 8: More on denotational semantics

Week 9: Axiomatic semantics

Week 10: Algebraic semantics