Slides and code from Alex's EECS 482 recitation section.