PL: Syllabus

This is an approximate list of topics that we will cover, and very approximate dates:

1. Wednesday, January 9th
Introduction to PL and to Racket
2. Friday, January 11th
Grammars, BNF, Typed Racket, Simple Parsing, The AE Language
3. Wednesday, January 16th
Semantics: Implementing an Evaluator for AE, Intro to Typed Racket
4. Friday, January 18th
The need For Bindings, Bindings & Substitution, The WAE Language, Formal Specs
5. Wednesday, January 23rd
Lazy vs Eager, de Bruijn Indexes, First Class Functions, Implementing FLANG
6. Friday, January 25th
More on Implementing First-Class Functions, Racket Functions: lambda
7. Wednesday, January 30th
“Point-Free” Programming, Substitution Caches, Dynamic vs Lexical Scope
8. Friday, February 1st
Implementing Lexical Scope: Closures and Environments, More Closures
9. Wednesday, February 6th
Types of Evaluators, Feature Embedding, Recursion without the Magic, the Y Combinator
10. Friday, February 8th
The Property of Y, Typing Y, Minimal Language: Lambda Calculus
11. Wednesday, February 13th
Lambda Calculus cont., Alternative Encoding
12. Friday, February 15th
Midterm review
13. Wednesday, February 20th
Recursive Binder: letrec, Implementing Recursion using letrec, Boxes and Mutation
14. Friday, February 22nd
rec Using a Cyclic Structure, Variable Mutation, State and Environments, Implementing Objects
15. Wednesday, February 27th
Toy, “Compilation” and Partial Evaluation
16. Friday, March 1st
Compilation contd, Lazy evaluation in Racket
17. Wednesday, March 13th
Lazy Programming, Call by Need vs by Name
18. Friday, March 15th
Implementing Laziness, Sloth, Implementing Call by Need, Side Effects in a Lazy Language
19. Wednesday, March 20th
Designing DSLs
20. Friday, March 22nd
Syntax Transformations: Macros, Macro Problems, Racket Macros, Implementing Laziness in Racket
21. Wednesday, March 27th
Recursive Macros, Low Level Macros
22. Friday, March 29th
Types, What are Types?, The Picky Language, Typing Control
23. Wednesday, April 3rd
Implementing Picky, Recursion, Data
24. Friday, April 5th
Type Soundness, Polymorphism
25. Wednesday, April 10th
Web Programming, Introduction to Continuations,Transforming Code
26. Friday, April 12th
Automatic Continuation Converter, Continuations as a Language Feature
27. Wednesday, April 17th
Continuation in Racket, Implementing New Features with Continuations