Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 12 hours/week
Pros:
1. Good theoretical introduction to machine learning
2. TAs were active on Piazza and they had office hours almost every day
3. Good first course to take because it forces you to review important mathematical concepts
Cons:
1. The theory assignments in the first half of the course are very time-consuming
2. The programming assignments in the second half of the course are too simple
3. If you're not comfortable with writing proofs there is a huge learning curve
Detailed Review:
This course is divided into two halves - algorithms and statistical learning. Different professors teach each half and they have very different lecture and notes styles. There are lectures and assignments released every two weeks (the lecture and assignment dates don't line up). The assignments are usually comprised of a set of theory questions and a set of Python programming questions. There is an exam after each half of the course that only covers material from that half.
To give some context my educational background is in statistics. I put 12 hours/week as the workload but I spent about 16 hours/week for the first half of the course and less than 8 hours/week for the second half.
The lectures and notes are fairly clear in the first half but lacking in examples which made the theory assignment questions very difficult. Tbh I was shocked when I first saw assignment 1 - the questions seemed impossibly difficult. However Piazza and attending TA office hours helped. I spent about 20 hours on the first assignment and less on the later assignments because I got used to the difficulty. The programming portions of the assignments are easy if you're comfortable with numpy and scikit-learn. I wouldn't say the programming assignments were trivial though.
The material in the second half of the course is about the same difficulty as the first half but the prof who teaches it gives a lot more examples. The theory assignments are much easier - they took me less than 2 hours to complete on average. The programming assignments in the second half are worse than the ones in the first half - a lot of them just consist of pre-written functions that you need to complete by writing a few lines of code.
The two exams are both challenging and about the same difficulty.
Overall I think it's a good first course to take because it forces you to review concepts in probability, statistics, linear algebra, and calculus. It also forces you to get back into the mindset of writing proofs. During the first half of the course I thought the course was on the edge of the line between "challenging" and "difficult", leaning towards "difficult". After the second half I think I'd just consider the course to be "challenging".
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (5 / 5):
Workload: 25 hours/week
Pros:
1. Mathematically challenging course that requires thorough thinking (much harder than typical LeetCode questions)
2. No midterm or final exams, just weekly quizzes
3. Lenient quiz grading where minor mistakes were typically ignored
4. Most students received A or A-
Cons:
1. Extremely slow quiz grading with insufficient TA resources (only two TAs for ~80 students)
2. Quizzes were significantly harder than the provided sample quizzes
3. The 48-hour quiz window (Friday noon to Sunday noon) was restrictive considering that TAs did not start grading until much later
Detailed Review:
This course was structured around 12 weekly quizzes with no midterm or final exam. While there was no required textbook, three were recommended: Intro to Algorithms (CLRS), Algorithm Design by Kleinberg and Tardos, and Algorithms by Erickson.
The lectures were generally clear, though occasionally the professor would thoroughly explain simple concepts while rushing through more complex topics. A few video recordings had issues (missing from Panopto or overlapping versions) that were never fixed throughout the semester.
The course workload was very high, making it the most difficult elective I've taken in the program. Each week has solved exercises to help understand the material, though these were actually much harder than the quiz questions themselves.
The biggest issue was the grading. With only two TAs (each limited to work 15 hours per week) for about 80 students, quiz grading was extremely slow. The professor has a script to project final scores after dropping the two (prorated) lowest quizzes, but this wasn't run until 9 quizzes had been graded (at which point 11 had already been taken), reducing its value for students trying to assess their standing.
The graded quizzes this semester seemed to be much harder than the sample quizzes from the previous run. I suspect the professor may have been trying to counter potential LLM usage, but this might have inadvertently pushed more desperate students toward using such help. A better approach might include a mix of easy/medium (more points) and challenging (less points) questions.
The final grade distribution was:
* A (90+, ~47%)
* A- (80-89, ~35%)
* B+ (70-79, ~8%)
* B (60-69, ~9%)
* D (<30, 1 student)
I would recommend this course if you enjoy mathematical challenges, but not if you're primarily hoping to improve your LeetCode skills. Be cautious about taking this alongside other demanding courses, as the workload can be difficult to manage.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (2.9 / 5):
Workload: 15 hours/week
Pros:
1. Dr. Liu's book is helpful for other courses
2. Enhanced my Python abilities through the programming tasks
3. Last assignment was incredibly easy
Cons:
1. First assignment felt like being dropped in the middle of no where naked and alone
2. Some peer reviewers didn't pay attention to submission and grade for alternate answers
3. I don't think that I am leaving the course equipped with the ability to apply this knowledge on the job
Detailed Review:
The Summer 2021 TA crew saved the day for this class. The entire team did an outstanding job at facilitating class discussion on Piazza. Thank you, thank you, thank you. Ultimately, I was successful in the course, but it took long hours. I'm not sure that I feel prepared to extend my learning beyond the scope of this course. The professor was fairly inactive on Piazza and of course the videos were recorded for asynchronous viewing. Assignments shared topics with the lessons, but the lectures weren't always clear on their delivery. Programming assignments can be slightly challenging if you have zero background in Python as I was at the start of the course, but none of the programming assignments took me longer than 3-4 hours. Theory assignments took more time at the beginning of the course (10-15 hours) but time commitment reduced as we progressed to ~3-4 hours. It's not clear if there's a confounding variable of me getting better or if it's simply a matter of the homework becoming easier.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (3.6 / 5):
Workload: 15 hours/week
Pros:
1. Good and concise lectures
2. Programming assignments follow lectures
3. Exams open-note
Cons:
1. Compiler takes a while to build taking less time to study for exams
2. Problem sets don't reflect problems in exams
3. Large codebase (con if you are not used to this)
Detailed Review:
I really enjoyed building the compiler and seeing how it works and it was fun just implementing the ideas from the course into actual application. I didn't like how the compiler could either take a lot of your time or not since the bandwidth could vary from person to person. This turned out to be a con for me as I personally didn't have enough time to prepare for the exams but since the compiler is worth 60% of the overall grade even getting a 50% average in exams will result in a B in the course. I really think exams should be replaced with weekly quizzes since they are already open-note and will allow students to focus on the current week's topic and reinforce that. Other than that the professor is really good and well-spoken and makes lectures interesting and concise and is able to explain high-level complex topics in a really simple format. I would definitely recommend taking this course as it will give anyone a solid foundation for programming and becoming a better developer. Do keep in mind getting an A takes a little bit more effort but should be manageable if you have the extra time. For the rest of us that have a busy schedule etc. getting a B is not hard, just split the compiler work through the time frame and should be good.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (1.4 / 5):
Workload: 8 hours/week
Pros:
1. Good breath of material covered
2. Lectures have great examples
3. Projects are tied in well to course content
Cons:
1.
2.
3.
Detailed Review:
While this course is quite easy, you can learn a good amount on visualization techniques and plotting! Additionally, if you have never learned R, this course can be a very good introduction into the language.
IMPORTANT TIP: always read the instructions for projects carefully and follow the instructions exactly!!! Some students may get into trouble for not following the instructions precisely, i.e. having too few or too many figures, or picking a dataset that is outside of the project instructions, etc.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.1 / 5):
Workload: 8 hours/week
Pros:
1. Piazza discussion was excellent. Professors are very responsive and help students work through the thought process on HW problems.
2. Quizzes and tests were very fair and straight forward.
3. Workload is pretty light.
Cons:
1. Typos in slides and on homeworks.
2. Plenty of math proofs and notation, not a great deal of practical examples.
3. Multiple choice can be brutal, no partial credit. One wrong answer on a quiz and your quiz grade can tank.
Detailed Review:
Good first course to take in the program. Workload is reasonable. If you do not have a math background, expect to study the proofs and notation a bit more. Really no programming is required, just a few problems in R throughout the entire semester. I recommend getting a study group together through discord or Piazza to discuss HW problems, really helps. Probability portion is much more difficult than the statistics proportion of the course. The textbooks really are not necessary. Mitzenmacher book is almost useless, except they do pull home HW problems from that book so it can lead you to the answer in a few cases. Lock textbook is good, but not really necessary as everything you need can be found in lectures.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (4.3 / 5):
Workload: 20 hours/week
I enjoyed this class so much that I sent the profs a thank you note and I'm copying it here (abridged) as it contains my opinion and feedback on it, hope someone finds it useful. My two pieces of advice are: make sure your Python level is such that you are comfortable with class objects and inheritance, and make sure you can use PyTorch comfortably. If not, you will agonize in the programming assignments.
"
I took your Reinforcement Learning class this semester through the online masters (thought I'd identify myself first!). I just wanted to say this is one of the most interesting classes I have taken in a while, including my previous master's degree in Petroleum Engineering. I really appreciated the fact that you didn't go all heavy in any one direction - there was a good balance between math-heavy theory, conceptual testing (via the homeworks), "mickey mouse" application (via the simple numerical application) and more serious application via the Programming Assignments (all the way to using PyTorch!). I especially enjoyed the programming assignments.
I'd also like to cast my emphatic vote in favor of self-spaced learning - I really liked that I had time to do the PA's and not be rushed. I could not have met the deadlines of PA2, PA3 and PA4, as I practically worked through Thanksgiving to get them correct.
My only piece of feedback is that perhaps students are not forewarned starkly enough of the required level in Python and Pytorch. "Strong programming skills" as a prerequisite is not specific enough. My level in Python was such that class objects were still mystical, so in order to do PA2, I probably spent 40% of the effort getting up to speed in Python first (which is why I could have never met a regular deadline). Then, probably a solid 10-15 hours of extra work had to be done in order to understand how PyTorch works and the NN - these were not considered in my original "15 hrs a week" budget for this class! Given proper warning, someone could have studied over the break and built a foundation at least.
In any case, I learned tremendously, so thank you again. I used to play StarCraft when I was a teen and I always wondered how the "AI" of those games work ... the stuff I read on DeepMInd's AlphaStar sounded fascinating and makes complete sense.
I'll probably be continuing my studies in Reinforcement Learning in the future as I suspect they will have applications in my industry that people haven't thought of.
Special shout out to the TA's! All very helpful and friendly - and patient!
"
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (2.1 / 5):
Workload: 4 hours/week
Pros:
1. Interesting Material
2. Practical
3. Broad range of material
Cons:
1. Brittle grading rubrics
2. Bonus points made Piazza very annoying
3. Surprise bonus points announced at the end for attending office hours.
Detailed Review:
A few of the classes here have bonus points for participation on piazza. As usual, this made for
- a series of vapid posts like "here's 10 pandas functions you can use" and "here's a link to some random blog post".
- a race to answer student questions whether you have the answer right or not. The TA's endorse the right answer, so you have a 50/50 shot of getting endorsed this way.
The grading rubrics were a bit weird, sometimes with arbitrary ways to lose points. For example, I lost points on one question because I had the title of my plots on the bottom, following the style of rmarkdown, rather than following the rubric's requirement that they be on top.
The material itself was interesting though, and the assignments themselves were practical. They covered a pretty broad range of material, and I was surprised how much depth they managed to get into. I feel like I actually know what I'm doing (or at least I'm well on the way to figuring out the details) in time-series, geospatial, and network analysis. I've applied some of the material in work already.
I wish regression was a bit more practical like this class was.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.1 / 5):
Workload: 10 hours/week
Pros:
1. Well organized
2. Fair exams
3. Covers the theory very well
Cons:
1. IMO, it could have touched on other learning framworks or some important concepts like VC
2. The course didn't go through how to design algorithms that are efficient while searching through hypothesis space
3. TAs almost provided the solution during office hours. This is unaccptable and was shocked when I got to see one recorded session!
Detailed Review:
As for the complaints about the notes from Dr. Klivans, I was basically taking notes on my own as if I was part of the class he was presenting to. This made it very easy to understand the material and go back to the notes when confused. I found his material is very well organized this way. The proofs were very easy to follow as well. The second half was also well organized. Some of the assignments took more time than others; but overall they were good and fair.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.8 / 5): ★★★★★
Lecture Rating (4.5 / 5): ★★★★★
Difficulty (2.1 / 5):
Workload: 6 hours/week
Pros:
1. The content is genuinely useful if you're interested in the field. It's a good introduction.
2. The programming assignments are cool.
3. This course is largely self-paced. The only exception is the programming assignments.
4. No final to stress over.
Cons:
1. There isn't much math. Most people would consider this a pro, but I appreciate the theoretical angle.
Detailed Review:
There are two components for your grade: "quizzes" and programming assignments. All of the difficulty is in the latter. The quizzes are VERY easy. The programming assignments can be easy if you are careful, however, simple mistakes can lead to a lot of debugging time.