Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (3.6 / 5):
Workload: 15 hours/week
==============================
My Background and Grade
==============================
ML Engineer at BigTech for ~2 years (now an ML Scientist). Took UT MCSO Linear Algebra, Deep Learning and NLP before this course.
I got an A in this course (93% overall, with 29/30 in Klivans' exam and 24/30 in Liu's exam, and full points on all HWs). I spent ~15 hours per week studying (this was the only course I took this semester). I also studied Probability beforehand since I was rusty (see next section).
I personally learned a lot from this class, since I took extensive notes which I will refer to for other parts of my job.
==============================
What this course IS and ISN'T
==============================
Set your expectations accordingly:
1. This course is NOT for those new to Machine Learning. if you have no experience with ML, take Deep Learning or NLP, or an online MOOC, before taking this course.
2. This is also NOT a course which teaches you how to program ML algorithms (beyond basic ones like Linear Regression and K-Means). It does not really fall into an Applications course.
Instead, this course teaches you the theoretical fundamentals of Machine Learning, along with several "classic" ML algorithms and how they work. If you have taken an introductory course to ML (e.g. Andrew Ng's or an undergrad course), and you want a deeper understanding of the math and theory of ML, this course is for you.
==============================
Prerequisites
==============================
1. PROBABILITY: you should be well-versed. Strongly consider taking an undergrad course in probability if you are unfamiliar/rusty. Topics you will need are: Ch 1-5 and Ch7 from Blitzstein (http://probabilitybook.net/).
2. LINEAR ALGEBRA: used for the PCA section. Topics you will need are Ch1, Ch2 and Ch9 from ALAFF (https://www.cs.utexas.edu/users/flame/laff/alaff/).
3. ML PROGRAMMING: attempt at least one Kaggle competition, to get versed with scikit-learn and Python. Try: https://www.kaggle.com/c/titanic
You can realistically learn one/two of these during the course (preferable 2 or 3). If you don't know all three, you might need to drop this course and take it in a later semester.
==============================
Tips to get an "A" in this course
==============================
1. The syllabus does not stress this, but the prereqs are crucial to how much you will struggle in this course. A LOT of students dropped out in the first 3 weeks because they realized they were out of their depth, mathematically. Take this course in a later semester, but don't skip the prereqs (especially Probability).
2. During the first few weeks of the course, read Ch 1,2,3 of "Understanding Machine Learning: from Theory to Algorithms" (the textbook for this course), which covers the Statistical Learning Framework. This was NOT mentioned on the syllabus, but is absolutely essential to make sense of PAC learning.
3. MAKE NOTES. The exams are "open-notes" but not "open-book", so you can't use the textbook, but you CAN use all your notes. I just wrote down everything in detail and solved all the problems (this really helped to learn the topics, too).
4. Try to drop the easiest homework, not the hardest. If you can't solve the hardest homework (which is HW1 or HW2) then Exam 1 is gonna be bad.
5. If you don't like the textbook "Understanding Machine Learning", there are others which explain the same topics. Particularly, I found the following useful:
- "Artificial Intelligence, a modern approach 3rd edition": best intro to Decision Trees.
- marthawhite.github.io/mlcourse/notes.pdf: useful for Maximum Likelihood, Linear/Logistic Regression
- "Pattern Recognition and Machine Learning" by Bishop: for kernel methods.
6. Prof. Klivans has LaTeX notes for certain topics available on his UT homepage:
- Mistake Bounded Learning, Decision Lists: https://www.cs.utexas.edu/~klivans/395tf07-lec1.pdf
- PAC model of learning: https://www.cs.utexas.edu/~klivans/f06lec2.pdf
- Perceptron: https://www.cs.utexas.edu/~klivans/05f7.pdf
- Polynomial threshold functions: https://www.cs.utexas.edu/~klivans/f08PTFlower.pdf
- Learning using Polynomial threshold functions: https://www.cs.utexas.edu/~klivans/f07lec5.pdf
- Boosting: https://www.cs.utexas.edu/~klivans/lec14.pdf
==============================
Pros of this course
==============================
1. Syllabus is great from a theory perspective: hits most of the major ML algorithms, and leaves you with a good idea on how to tackle new topics.
2. The textbook presents topics with the right amount of mathematical depth (assuming you are familiar with Probability notation). It is both explicit and intuitive. The Statistical Learning Framework in Ch1,2,3 is a must-read.
3. Peer grading is lenient and not too much work (1-2 hours for each HW). There is an answer key for each HW so you are not left to the whims of your peers.
4. Prof. Liu's lectures (second half) are well-presented and he works through examples. His supplementary material is useful.
==============================
Cons of this course
==============================
1. The amount of effort needed for each HW BADLY unbalanced. HW1 and HW2 take 50-60 hours each (this includes reading the material, making notes and attempting the programming and theory questions). HW5 and HW6 took ~10 hours each. Though, I felt like I learnt the most from HW 1&2.
2. Prof. Klivan's lectures (the first half) are flipped-classroom, which expect you to have read each topic before watching each video. This does not translate to an online-MOOC setting. I personally just learnt the topic from textbooks/online sources, and used the lectures for review for the exam.
3. The second exam was hard (harder than the first) and I felt HW 4-6 did not adequately prepare us for the difficulty of the exam.
==============================
Overall rating
==============================
I personally learned a lot from this class, but a lot of it was self-study. Making notes helped clear the exams.
Klivans:
Lecture quality: 2.5/5
Homework difficulty: 4/5
Exam difficulty: 3.5/5
Grading fairness: 4/5
Liu:
Lecture quality: 3.5/5
Homework difficulty: 2.5/5
Exam difficulty: 4/5
Grading fairness: 4/5
Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (3.6 / 5):
Workload: 12 hours/week
Pros:
1. Lowest 2 grades are dropped.
2. Homework allow for unlimited attempts before the corresponding deadlines.
3. The stats part is much better than the probability part; it's more applied, with clearer lectures, and StatKey seems like an extremely useful online tool.
Cons:
1. Extremely theoretical for the probability part.
2. The probability text book is terrible and the lectures seem to follow it closely. Lots of bugs, typos, errors in the lecture slides.
3. They're obsessed with specific rounding methodology.
Detailed Review: Good material, in principle, but the delivery is not always amenable or the most clear, and at times it's highly theoretical, disjointed, and not very relatable. Formulas are introduced and derived, but there's little to no explanation of what it means intuitively.
Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 18 hours/week
Pros:
1. Content is very relevant to construction of deep neural networks.
2. Robust learning of PyTorch framework.
3. A lot of really good concepts especially around convolutional models.
Cons:
1. Worst final project imaginable
2. Introduction to reinforcement learning was not very useful
3. Could be a nightmare if you are new to Python/PyTorch
Detailed Review:
I really enjoyed the overwhelming majority of this class. The assignments were a lot of fun and they built on each other in a straightforward method as the class progressed.
The lectures were valuable for the most part and up until the end of the course the workload is very manageable.
You can typically expect to spend around 10-20 hours per week on this course and I found it very relevant to Deep Learning.For the majority of the course the difficulty rating is between a 3 and a 4.
The caveat to all of this is the final project might be the single worst assignment I have had to complete. Part of this was my fault as I was not able to join a group and ended up working on this project solo.
I am not exaggerating when I say in the final two and a half weeks leading up to the project submission due date I spent an average of 50-70 hours a week working on this project. In hindsight, if I had known the correct approach in the beginning it likely would have been very straightforward. The issue is that the teaching staff provides little to no guidance on how to approach the final project, or even guidance as to what solutions are and are not acceptable.
TLDR:
Great content, good course, horrible final project
Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (0.7 / 5):
Workload: 2 hours/week
Pros:
1. Lectors are engaging and easy to follow
2. Not time consuming (easy course)
3.
Cons:
1. With peer reviews, sometimes there isn't any feedback
2. All homework solutions are basically given in lectures so not sure it really tests anything.
3.
Detailed Review:
I was hoping for a more rigorous course and I didn't feel like there is much to take away. While it was enjoyable, I didn't think it was a graduate-level course.
Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 10 hours/week
Pros:
1. Great detailed online textbook
2. Valuable course for those in program without robust undergraduate linear algebra course experience
3.
Cons:
1. Disorganized (long time to receive grades, and ultismrly it appears about 30% of the final grade ended up being free As for everyone because lack of time to grade)
2.
3.
Detailed Review:
Echoing sentiment from other reviews: this is an extremely manageable course if you have experience with robust mathematics courses from your undergraduate experience. If not, expect a significant amount of effort to keep up.
The revival of this course in Spring 2023 was a bit disorganized — one TA (Jeff) really kept the whole thing together by doing awesome work on Piazza Q/A, but the course size was so large that grading and logistics questions often were not responded to timely by course administration.
Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (4.3 / 5):
Workload: 24 hours/week
Pros:
1. Great lectures
2. Professor occasionally responds to Piazza posts and did a special Q&A at the end of the quarter
3. Lead TA was heavily involved in the class and very responsive (seemingly at all times, pretty much 24/7)
Cons:
1. Weekly HWs that are usually very time-intensive; little to no break once this rollercoaster starts
2. Multiple choice exams with little to no partial credit, so it's easy to get a mediocre score even if you studied for days
3. Don't take this class expecting a high/good grade, even if you are used to getting A's (i.e., don't be obsessed with grades if you are taking this class!) That said, the grading is fair. You get what you earn, nothing more.
Detailed Review:
Great class from a leading expert in the field of quantum computing.
This is a theory-heavy class, so if you are coming from an applied science or engineering background, you may struggle (like I did) on the fact that the class focuses a lot on theorems and proofs. The current state of the art and industry achievements are mostly left to the last lecture, but this class is a great place to get started to really understand the theory underlying all of QC applications. It is definitely worth it to understand these principles.
Aaronson's lecture notes are extremely useful and a great read, even if you are not enrolled in this class / don't plan to take this class.
Warning: The first two HWs are deceptively easy; this peace doesn't last long. I wish I had known in advance that I was going to have restless nights and the fear of failing constantly looming over me once I hit the fourth week of this class. Don't take this class if you have a very difficult, time-consuming full-time job or other responsibilities that may get in the way of studying. This class will demand your full devotion every week, no breaks. Be prepared for what you are signing up for and you won't be disappointed.
Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (3.6 / 5):
Workload: 7 hours/week
Pros:
1. Interesting Material
2. Good Lectures
3. Great TAs
Cons:
1. Exam Format
Detailed Review:
Material/Homework: This course is very theory heavy and can be seen almost as an extension of where linear algebra stops. Although this is not particularly a bad thing, don't come into it expecting a lot of practical problems to work on. Several of the homework problems involved proving certain theorems, performing computations from lecture, and implementing some of the algorithms in python. The material itself was interesting, for example seeing how the dual formulation could be used prove seemingly unrelated theorems.
Lectures: There are two lecturers. The first one goes over the base of the course and has overall just decent lectures. The good thing is that the slides were attached to the edx webpage. The other professor expands upon and clarifies content in the other lectures and these were very good. Only bad thing was no slide attachments are available for these.
Piazza / TAs: Piazza was actually a really good resource in this class. The amount of post was a reasonable level, and students questions and answers were typically very helpful. Both TAs were very responsive on Piazza and gave thorough explanations. The TAs sessions were also very useful. They also had some really great review sessions before the exams that made for great reference sheet on the exams.
Exams: The exams were pretty difficult, with the class averages being very low on all of them. They are all multiple choice, so there is no partial credit. This isn't ideal for a course like this were you can get a problem 95% right but still get no credit due to the all or nothing format. On the first exam, there were several "select all that apply" with over 6 possible choices. Several students complained and they largely reduced these for the two subsequent exams, which made those exams much more manageable. The time limit, particularly the one hour limit for the midterms, also seemed too short for the amount of questions asked.
Textbook: The official textbook was Convex Optimization by Boyd. This is a pretty famous textbook for being the go to book on optimization. It is also known to be a very difficult read with the book riddled with tons of complex math notation. The text could be useful in some sections of the course, but it does require a significant amount of time to parse the information in it.
Overall I enjoyed the subject and have a better appreciation for the subject matter. I also came out stronger at math than I was going in, so that's always a positive.
Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (3.6 / 5):
Workload: 15 hours/week
Pros:
1. Course material is interesting (to me at least)
Cons: All evaluation methods
1. Test cases in PA1 is unrepresentative
2. Quizzes are nightmare fuels
Detailed Review:
I took the course because of the course title alone- how could I not be interested in that? I extracted myself very well considering the mess that was programming assignment 1, and here are my thoughts.
The lectures are very good, and it is very evident that the professor knows what she's talking about. The presentation of concepts are effective, and usually you could get everything you need from the lectures.
All evaluations in this class, however, I do not like. The exercises and quizzes are multiple choice questions that are very tricky. Maybe it's just down to familiarity, but they are nothing like the multiple choices you'd get in chemistry, for example, that I'd get very easily after understanding the concept. They often require you to think about edge cases. The quizzes are the same except now you only have one attempt at each question, and the immediate feedback means you (I mean myself) could be easily tilted and make more mistakes. All questions require a deceptive amount of time to think about to get right.
As for programming assignments, as of this semester, PA1 by far requires the most amount of time. The test cases are also very skewed, I got 40/40 test cases available but only got ~75% because the tougher test cases are hidden, which was a complete joke. PA2 does not suffer from this problem, and surprise surprise, 100% translated to 100%. PA3 is at the end of the semester, with new concepts and in a different language and style, but it's not that bad.
TAs I assume varies each time, but this iteration has TAs that were unwilling to answer questions on course logistics like average grades, grade cutoff and presence/ absence of curves. They also do not respond to your questions on quizzes/ exercises unless you have exhausted your attempts, at which point you probably just want to move on.
Overall, decent course, interesting material, moderately challenging assignments, very frustrating evaluation methods, definitely not an easy A, but I would still take it.
Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 10 hours/week
Pros:
1. Lots of interesting information
2. TAs were relatively helpful with confusing questions
Cons:
1. HWs are a big leap from the lectures sometimes and very confusing
2. Can be very difficult if you haven't had regression experience
3. Peer graded quizes are unclear sometimes
Detailed Review:
Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (5 / 5): ★★★★★
Difficulty (2.9 / 5):
Workload: 12 hours/week
Pros:
1. Very good lectures with good explanations and clear examples
2. Mostly interesting projects, makes you a better programmer (but only if you were a programmer to start with, I can't imagine doing these assignments as an inexperienced programmer)
3. No exams
Cons:
1. Grading very opaque, had no idea what my actual grade was at any point
2. Quizzes and to some extent programming assignments felt disjoint from lecture, especially at beginning
3. Huge focus on stopping cheating, at the expense of learning
4. It's impossible to keep up with Piazza
Detailed Review:
Note: I have a BS with a minor in CS, 10+ years programming experience, and a strong but informal Python programming background.
Overall I enjoyed the class and felt like I learned a lot from the lectures. The lecture format was instructor at the chalkboard which is my favorite style (versus reading boring powerpoint slides). The lectures were interesting. The addition of a "student" to interact with the instructor was nice as well.
The recommended book is okay, but the code examples are all in Java while the class is all Python. I gave up trying to keep up with the reading assignments (for lack of time) and didn't feel like it hurt my understanding.
The quizzes were okay, but poorly worded sometimes. At the beginning of the semester the quizzes felt very disjoint from the lecture and in one case had material that I don't think had been covered yet. Also, the quizzes appear to be randomized so not everyone is presented the same questions. I have a strong objection to this scheme and I believe it is very unfair to not give the same set of questions to everyone.
The programming assignments were mostly interesting and enjoyable. It is definitely to the student's benefit to already have experience programming in Python and some familiarity with Linux. The weekly time commitment for the later assignments was more than the earlier and I felt burned out by the end (making it difficult to get started on some of them). The programming assignments have "extra credit" called karma that doesn't provide points but if you do a lot of karma they may bump your grade at the end. I spent a lot of extra time doing some of the karma and felt like I should have saved my energy for the next assignment instead (my point being plan better than I did I guess).
Grading was very opaque. There was a promised curve all throughout the semester, but at no point did I feel confident of my grade. There was little explanation of programming assignment grades or test cases and no correct code is provided, making it impossible to learn from mistakes. There appeared to have been requirements that were graded on but not provided in the assignment descriptions. The grading was frustrating and stressful.
Piazza is awful as a platform for 400+ students in one class. It's impossible to keep up with. The instructor and TAs did a good job keeping up with it though and were timely in responding to private posts.