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:
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.
An understanding of the parts of a language (features) and their interactions is necessary for their proper use, as well as for language design itself. Language design concepts also help in designing programs, subroutine libraries, and user interfaces. Programming paradigms are intellectual tools that can be used regardless of the language in which one programs.
Specific languages are used to study of ``major features'' such as compound values, closures, modules, type checking, inheritance, message passing, and logical variables. The study of specific languages keeps the discussion concrete and provides a basis for judging the utility of such features and specific ways to provide them.