The following are powerpoint slides (and associated code) from the lectures.

- Lecture 1
- Slides: Acknowledgements, Course details, Academic Integrity, Introduction to Staging, Meta-programs, Introduction to MetaML.

- Lecture 2
- Slides: More details about MetaML and MetaOcaml. Lift, Cross stage persistence, New kinds of errors caused by staging.

- Lecture 3
- Slides: Transformers vs generators, Exponentially large generators, staging the shortest path algorithm, Introducing let to "flatten" generated code. The staged Merge program. Code from the lecture.

- Lecture 4
- Slides: The calculator problem. Optimal generation vs post generation optimization. Staging interpreters. Binding time improvements. Code from the lecture.

- Lecture 5
- Slides: Dot-product, use of list, special case static singleton lists, staged arithmetic, safe beta, safe eta. Code from the lecture.

- Lecture 6
- Slides: Monads. Three interpreter extensions: Print, Divide, Multiple Values. Monads are patterns. Monads in MetaML. Higher order Type Constructors, Rank-2 polymorphism in Recordes in MetaML. The Do-Return syntax in MetaML. The final interpreter. Code from the lecture.

- Lecture 7
- Slides: Staging the RE language using Monads. Code from the lecture.

- Lecture 8
- Slides: An operational semnatics for MetaML subset. Interpreters for the lambda calculus. Using constants to encode arithmetic, if-then-else, and recursion. Adding staging. Using Covers. Code from the lecture.

- Lecture 9
- Slides: Generating optimal code using monads and abstract code. Code from the lecture.

- Lecture 10
- Slides: A Type system for MetaML. Typing rules, contexts, judgements. DeBriujn Indices. MetaML as a language with a sliding band of contexts. Omega as a tool for experimenting with type systems. The Natural number example in Omega. MetaML as an Generalized Algebraic Datatype in Omega. The eval function, the build function. Example ill-typed programs. Code from the lecture.

- Lecture 11
- Slides: Discussion about Homework 6. The CMix partial evaluator. Code from the lecture.

- Lecture 12
- Slides: Search Based Automatic Binding Time analysis. Binding time improvement. Code from the lecture.

- Lecture 13
- Slides: Reduction semantics for MetaML. Reduction semantics, Rewriting systems, Coherence, Confluence. Level annotated terms. Big-step semantics.

- Lecture 14
- Slides: Implementing an HOL like theorem prover in MetaML. Code from the lecture.

Back to CSE583 Home Page