Slides and code from Patrick's EECS 280 discussion section.