This is a course that lets you appreciates and discover the nitty gritty details of how programming languages are designed and implemented. You will find out what are the underlying factors of how a specific programming language is designed. You will realize why some programming languages have some features and capabilities that you do not find in other programming languages. You will also realize that there is no such thing as a "supreme" or "elite" programming language, it's just that they are designed and built in a manner that suits the need of a specific type of users/programmers.

This course will discuss the following (but not limited to): Program representation; language translation and execution; syntax analysis; semantics analysis; code generation; runtime systems; and language pragmatics.