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