University of Waterloo Fall 2013 CS 246