Course Description

Unlike courses that teach a specific programming language, Computer Science 342, ``Principles of Programming Languages,'' is a course about programming languages.

The study of programming languages is primarily concerned with the following questions:

Com S 342 addresses all of these questions to some extent; as the course progresses, its emphasis shifts from the first questions above towards the last question.

The catalog description of Com S 342 at Iowa State University is as follows:

Organization of programming languages emphasizing language design concepts and run time implementation. Study of major features of various programming languages. (3 credits).

``Organization'' means how the features of programming languages may be combined to form a unified whole. ``Language design concepts'' includes principles of good design (both technical and aesthetic), styles of programming (such as the functional, object-oriented, and declarative paradigms), the interactions among various features, and the costs of implementing various features. ``Run time implementation'' means the data structures and algorithms used to implement interpreters and compilers. A ``feature'' of a programming language is some piece of its syntax, together with the semantics (meaning) of that syntax. For example, an if-statement is a feature of Pascal, C, and BASIC.

This offering of Com S 342 will focus on functional programming and major features of programming languages.

The study of the functional paradigm, as a radically different way to program, helps show what features of programming languages are common to different paradigms, and highlights issues of organization and language design.

The use of functional programming to describe interpreters is a primary technique used in the course. It helps to explain run time implementation techniques in a way that makes the semantics (meaning) of such features precise. Having an interpreter also allows one to experiment with such features and their variations. The features studied will be fundamental ones, such as scope and array models. The other topics will be touched on, including basic design concepts (such as regularity), but not high-level design principles such as parameter-declaration correspondence.

Last update $Date: 1997/08/19 22:14:10 $
Gary T. Leavens