professor
John Patrick Cunningham

Aug 2016

This class was easily one of my favorite classes I have taken at Columbia. As an undergrad who is not in the statistics department, I sometimes had to play some catch up on some of the statistical background, but it was totally worth it. Cunningham is, in my view, the ideal Columbia professor. He expects a lot of his students, he won’t be easy on you, he doesn’t put up with student bullshit (turning in homework late, cheating on exams, etc.), but is extremely good at teaching the material, and always happy to answer questions. He is also insanely hot. The pace of the class is heavily dictated by students asking questions to slow him down. For the first 3 weeks or so, people wouldn’t raise their hands when Cunningham stopped for questions, so he would move on assuming we were ready to go. Once people got comfortable asking questions in a large classroom, the pace slowed, he reviewed stuff that people were confused about, and things hit their stride. He is extremely good at explaining the concepts of the various algorithms through examples, diagrams, demonstrations, etc. As such, one walks away with a very good understanding of what the pros and cons of various algorithms are. His slides are quite detailed, and if you take the time to understand everything on there you will be golden. He supplements the slides with hand written examples and notes when necessary. This isn’t a proof based class but you definitely need to be capable in linear algebra and basic statistics to do some of the math with the algorithms provided. HW 0 should be a good indicator of whether you have the appropriate math background or not. If you are an undergrad in this class, you will have to take some time to tackle the material outside of class. He tries to scare you on the first day of class, but if you’re willing to put in some work for this class, don’t let it deter. Cunningham covers a LOT of material, and in a decent amount of depth, so I would usually walk out of the classroom overloaded, but after going back through the slides and thinking through things, I was generally good to go, and this process resulted in me getting a very high grade in a mostly graduate class. The way he phrases the key takeaways of each algorithm are a godsend so if you just right those down in class, that will help you work through things on your own. His exams are fairly conceptual, with one problem involving an in-depth mathematical derivation. In our case, he made the midterm a bit too long (which he told us before we started), but overall the class performance was lower than I expected, so I think the grading was quite fair. Cunningham does his best to emphasize the learning in the classroom rather than the grades, and his bravado combined with his young age makes for a really awesome and energetic classroom environment. On a slight tangent, it is also nice to see a teacher who is willing to call out a student for opening an exam early, as stuff like that seems go unnoticed for many professors here. Overall this an interesting course, covering a lot of material, with useful assignments, taught by a great professor. If you want an easy class, look somewhere else, but if you want to learn a lot and really understand the material, then sign yourself up.

May 2016

A fun class in machine learning. We covered a lot of basic algorithms that are important to machine learning, and we did it through a statistical lens, learning a lot about statistical modelling. One of the goals was building intuition for machine learning, and I would say it was achieved successfully. However, at times, I felt this came at the cost of skipping formal proofs. Although the algorithms seem to work in reasonable cases, there is never a real definition of the learning problem we are trying to solve. In this way, the classes seemed more about applying machine learning algorithms than proving their correctness. The homeworks were reasonable, each had some math and some programming. We worked in R, and it was fairly easy to translate mathematical notation into code. The first exam was extremely challenging, the second was very easy. Presumably professor Cunningham is still trying to strike a balance there. You need to know linear algebra to take this course. Some statistics and programming wouldn't hurt either.