This course is an upper division computer science course that studies the design of programming languages.
In this course, we will discuss the entire programming language family, starting with an introduction to programming languages in general and a discussion of the features and functionality that make up the modern programming language. From there, each unit will discuss a different family of programming languages, including Imperative, Object-Oriented, Functional, Scripting, and, Logical. For each language, you will learn about its computational model, syntax, semantics, and pragmatic considerations that shape the language. By the end of this course, you will be able to intelligently discuss each of these programming paradigms, their respective strengths and weaknesses, and the reasons why you would opt to use one over the others in a given situation. You will also have opportunities to delve into the details of the design and evolution of several specific programming languages, including Scheme, Haskel, Java, C++, C#, Perl, Python, and Prolog.
Upon successful completion of this course, the student will be able to:
Identify the common concepts used to create programming languages.
Compare and contrast factors and commands that affect the programming state.
Explain the evolution and key features of the major programming languages.
Analyze and evaluate new programming languages and new language features.
Illustrate how execution ordering affects programming.
Identify the basic objects and constructs in Object-Oriented Programming.
Explain the characteristics of pure functional functions in functional programming.
Describe the structures and components utilized in logical programming.
More info: http://www.saylor.org/courses/cs404/