Topics

This is a (fairly) complete list of the topics we'll cover in this course. It's not guaranteed to be exhaustive, and it's subject to change, but we'll do our best to keep this list up to date.

Course Introduction

Beginning Ocaml

The Basics

Unions and Products

Lists, Tail Recursion

Algebraic Data Types

The Basics

Polymorphism

Higher Order Programming

Maps and Filters

Folds

Intermediate OCaml

Error Handling, Testing

Modules

Parsing

Formal Grammar

Lexing, Parsing, Ambiguity

Lexer/Parser Generators

Formal Semantics

Operational Semantics

The Substitution Model

Variables, Scope, Closures

Closures and the Environment Model

Type Checking

The Simply-Typed Lambda Calculus

Progress and Preservation

Extended Example

Type Inference

Hindley-Milner (Light)

Unification

Constraint-Based Inference

Extended Example

Compilation

Stack-Based Languages

Byte-Code Interpretation