Programming language (PL) research has been pretty much idle for decades.
So an advanced course in programming languages is usually to introduce various PL theories instead of discussing their related research topics.
A wide variety of topics has been covered by advanced programming language courses.
This course will mainly cover formal descriptions of programming languages and paradigms because of the following reasons:
Fundamental programming language concepts being for undergraduate students:
The course CSci365 Organization of Programming Languages covers the following topics: compile and run time requirements of programming languages, parameter passing and value binding techniques, and vector and stack processing.
Help in understanding and using programming languages and paradigms:
The underlying concepts help programmers better understand and use programming languages and paradigms.
Support for language standardization:
Language standardization will help solving the problem of portability: how can we write programs which will adapt to various operating environments without undue effort?
Guidelines for language design:
Concepts that are hard to model mathematically often turn out, once transposed to language features, as hard to teach, hard to implement, or both.
Aid in writing compilers and language systems:
Formal descriptions can provide solid basis on which to design compilers and, more generally, language systems such as interpreters and debuggers.
Support for program verification and software reliability:
Associate with a program a mathematical transform and use mathematical proof techniques to check this transform achieves the program's purpose.
Model for software specification:
The methods used for PL specification yield powerful insights into the software specification.