PL: Syllabus


This is an approximate list of topics that we will cover:

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