This course will study the main principles underlying the design of programming languages. The first half of the course will focus on functional programming languages, as these tend to have the closest link to fundamental principles. We will use the ML programming language as a practical example of these design principles, learning the language and writing some interesting programs in it. We will complement this practical study with theoretical study of various lambda calculi and their formal semantics. The second half of the course will study object-oriented languages, including learning and programming in an advanced practical OO language (such as Cecil) and studying the formal semantics of OO languages via lambda calculus extensions.
Course Brief Description:
Course Instance ID: