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.
To be honest, we have gotten away from a literal interpretation of this course description. The run-time implementation aspects of programming languages are definitely less stressed than the course description would suggest, but they are discussed in more detail in Com S 442 (Principles of Compiling). We also do not focus on language design itself as a essential objective, because a background in the various programming paradigms and the concepts and terms of programming language design need to be learned first.