Programming Languages talks about the modern programming langauge concepts and paradigms, and the design trade-offs and implementations of different language features. Common sub-topics include compilers, interpreters, parsing, optimization, etc.

To study Programming Languages, students should have backgrounds in:

- Discrete Mathematics as in
*Math Foundations* *Data Structures and Algorithms**Computer Systems*