PL: Syllabus

This is an approximate list of topics for each class that we will cover. The dates are not specific since the pace will vary, but each item roughly corresponds to to one 1.5h lecture, so expect to cover about two bullets every week:

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