CSC 530: Programming Languages and Translators
with treatment of
Comparative Computational Religions
Gene Fisher (gfisher@thyme)Prerequisites
Office: 14-210
Office Hours: MWF 9-10, Tu 9-11
Objectives
- Undergraduate programming languages class (CSC 330 or equivalent).
- Experience with three or more programming languages.
- Mathematical maturity.
Course Materials
- to learn about the principles of programming languages developed over the last four decades
- to learn about functional programming, and its benefits
- to learn about notations to express the formal semantics of programming languages
- to investigate in detail the operational semantics of important programming language constructs
- to engage in healthy debate on the "religious" aspects of programming language design, implementation, and usage
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
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 in530/doc/lisp-reference
Class Work530/doc/lisp-reference/Digital-Press/README
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
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:
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