Andrew Hannum
He's a really cool guy, but his class is very difficult. First, if you take notes, be ready to write, he goes at a supersonic speed, missing things is easy. The in class lectures are very hard to translate to labs (which will take you 3-4+ hours). You can reach out for help, but his work is ridiculously hard. Know java beforehand and you'll be fine