Course SummaryThis course is a careful study of programming language features: basic data, data structures, functions, objects, types, concurrency, etc. Each feature is studied in intimate terms, through the implementation of interpreters and then through operational semantics, a mathematical approach to program meaning. The OCaml dialect of the ML programming language will be used. OCaml has features such as type inference, a higher-order functional basis, and an elegant module system, that make it worthy of study in its own right.
What you will gain from this course
- You will attain a deep understanding of how programming languages are structured and why they work well (or not so well).
- You will understand and appreciate the functional, object-oriented, stateful, and concurrent programming paradagims, and the meaning and importance of features such as modules, statefulness, and type systems.
- You will learn some of the mathematical principles behind programming languages.
- You will become a good OCaml programmer.
Prerequisites: 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.