The goal of this subject is to provide students with a good grasp of the structure of computer languages, which in turn provides the tools for the students to master new languages easily. This subject covers the principles underlying all programming languages and their implementations.
We will apply the concepts and principles to object oriented languages, functional languages, logic programming languages, and network programming languages. Specifically, we will use Java and its language processors to illustrate these principles when they are applied in practice.
The core topics include: language specification, objects, expressions, control and types. We discuss the concrete aspects of each topic followed by implementation strategies and the related semantic issues. We will use examples in Java, Javascript, C, C++, FORTRAN, Pascal, Ada, COBOL, and other programming languages.