I'm Jeff Avery, a Continuing Lecturer in the [Cheriton School of Computer Science](https://cs.uwaterloo.ca/), at the [University of Waterloo](https://www.uwaterloo.ca/). This site contains notes for courses that I've taught recently. These are **not** intended as a replacement for any official course material, but rather a place where I can explore topics before deciding whether to include them. This allows me to evolve this material at my own pace, without interfering with an active course. It also means that some of the ideas here are half-baked, incomplete, rambling and may never actually be used in-class! *Caveat emptor*. > [!tip] CS 246 > The CS 246 notes on this site are from 2016, and out-of-date! I attended Brad Lushman's lectures before teaching the course for the first time, and these are the notes that I took in-class. If I was to teach that course again, I'd start with the [most recent version of the course](https://student.cs.uwaterloo.ca/~cs246) that aligns with CS 136L. > [!tip] CS 346 > If you're taking CS 346, please read the lecture slides on the [course website](https://student.cs.uwaterloo.ca/~cs346). The CS 346 notes here should be considered *optional* material that expands on ideas that we have discussed in-class. Enjoy. Jeff