Course Notes from uWaterloo