Stuff for http://www.stanford.edu/class/cs193p