PL: Syllabus

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

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