- This course is a study of the deeper principles behind programming
language designs, and not of particular programming languages.
- We focus on fundamental language features such as data structures, functions, objects, types and concurrency, and how they interact with each other to achieve the desired expressiveness.
- We study features through the implementation of interpreters and through
operational semantics and type systems, mathematical approaches to program meaning.
- We will learn basics of functional programming via the OCaml programming language. OCaml
has features including type inference that make it worthy of study in its own right.
- This course is mathematical in nature and so is recommended for upper-level undergraduate students with strong mathematics skills, or for graduate students. It is not recommended for sophomores.