Class Notes
These are the class note files, each has a rendered HTML version as well as a text file version (which can be more convenient for reading off-line and for quick search and reference). Note that the last two entries in this list are special: one has all of the notes we covered in one file, and one has the notes we have yet to reach.
Handouts
- Email and Piazza Policies: Guidelines for writing posts (in piazza and in general).
- Style Guide: A collection of guidelines for writing better code.
- Tips: Some useful tips for PL work, DrRacket tips and more.
- FAQ: Common frequently asked questions.
- #lang pl work vs Fundies: The new #lang pl work vs the good old Fundies days.
- About PLQ: What are these PLQs?
- Debugging Macros: For the macro homework
Interpreters
- ae.rkt — The AE interpreter (Lecture #4)
- wae.rkt — The WAE interpreter (Lecture #5)
- flang.rkt — The Flang interpreter (Lecture #7)
- flang-env.rkt — The Flang interpreter, using environments (Lecture #10)
- church.rkt — Making Schlac into a practical language (not an interpreter) (Lecture #13)
- church-alternative.rkt — An alternative “Church” encoding: use lists to encode numbers (Lecture #13)
- flang-box.rkt — The FLANG-BOX interpreter (Lecture #15)
- toy.rkt — The TOY interpreter (Lecture #16)
- sloth.rkt — The SLOTH interpreter (Lecture #20)
- sloth-cached.rkt — A call-by-need version of the SLOTH interpreter (Lecture #20)
- mylang.rkt — A language that is built as an extension on top of Racket (Lecture #24)
- picky1.rkt — The Picky interpreter, verbose version (Lecture #26)
- picky2.rkt — The Picky interpreter, almost no explicit types (Lecture #26)
- picky3.rkt — The Picky interpreter, no explicit types (Lecture #26)
- web-base-library.rkt — Fake web interaction library (to be used with manual code CPS-ing examples) (Lecture #29)
- web-simple-language.rkt — Simulation of web interactions with a CPS converter (not an interpreter) (Lecture #30)
- cps-language.rkt — A language that is CPS-transformed (not an interpreter) (Lecture #30)
- continuation-based-web-library.rkt — Simulation of web interactions with Racket’s built-in continuation facility (Lecture #30)
- amb.rkt — The ambiguous operator and related utilities (Lecture #31)
- producer.rkt — An implementation of producer functions (Lecture #31)