Overview of different paradigms of programming languages. Detailed studies in data-driven, object-oriented, functional, and logic programming. Theoretical aspects of programming languages including basic language translation, virtual machines, abstraction mechanisms, declarations and types.
This subject divides the study of programming languages into lectures and project.
Note that the four projects are each divided into three homeworks, one per week.