Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 7 hours/week
Pros:
1. The concepts were pretty well-explained (at least compared to my past experiences of algebra)
2. It seems like a great way to ramp up on algebra for the MSCS.
3. 2nd midterm and final were take home exams and were released over around 2 weeks before the due date. You could almost just think of them as assignments/projects.
Cons:
1. Long turnaround on getting grades. We didn't ever get the 2nd midterm marks back, for example.
2. Piazza questions were often not answered or needed students to answer. FWIW, I think there was a very large cohort of students taking the course. They did post a lot of helpful hints & clarifications for the final exam though.
3. Not particularly interesting content (very subjective)
4. Take home exams weren't organized the best. Submission instructions came very close to the deadlines.
Detailed Review:
The course covers algorithms for computing algebraic things (like eigenvalues/eigenvectors, solutions to matrix equations, etc.). To do this requires understanding a lot of algebra, so this course is probably a great way to get ramped up on algebra. It would also be somewhat helpful for proofs since you see a lot of them, but you don't get enough feedback to improve your skills. I came in with a strong maths background, so this wasn't an issue. The maths foundations from this course should be more than enough to do OLO, QIS, RL, DL, NLP (I haven't done the other courses that require some maths knowledge).
The organization was not the best. Take home exams were released early but submission instructions were released very close to the deadline. Homeworks were marked very late (last 2 homeworks weren't even marked; full marks were given if you made a submission).
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (2.1 / 5): ★★☆☆☆
Difficulty (3.6 / 5):
Workload: 8 hours/week
Detailed Review:
The prior reviews for this course continue to be relevant. Sanghavi's lectures, which serve as the primary way of teaching the information in this class, seem to not be updated from 2018/2019. The content of this class isn't cutting edge so this is alright, but the number of unaddressed typos and errors in the lectures only made them harder to get through. The same goes for assignments and their keys, which is unacceptable because this class clearly recycles its material semester after semester.
The textbook is mostly beyond the scope of the class, and gaining useful information out of it is mostly not worth your time, especially after the first few introductory weeks. Sometimes the homework problems relate to an example from Sanghavi or Caramanis' lectures, but otherwise there tends to be a gap between the lecture and homework material necessitating outside studying or going to office hours for help (which was very helpful with this semester's TA, hopefully it stays that way in the future).
The material in this class is split mostly halfway between convex optimization/duality in the first half and optimization algorithms in the second half. The convex optimization section was taught decently well, with a heavy focus on duality and examples of it being included. The optimization algorithms in the second half are somewhat rushed, with a bunch of variants of gradient descent being introduced in the last 3 weeks with very basic coverage and little to no coverage at all on the homeworks which was disappointing.
The exams are all multiple choice and tend to be unrelated to the lectures and homeworks, not by the material necessarily but by the types of questions that are asked. There is a much heavier emphasis on reasoning through theorems and doing short numerical examples, which makes sense given the 1 hour/2 hour time periods for midterms and final exam respectively, but this disconnect makes it hard to prepare adequately for the exam. The best you can do, especially for the first exam, is to have a strong understanding of the concepts and be able to reason about them quickly. Regardless, the heavy curve applied at the end of this semester makes this class more bearable at least.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (2.1 / 5): ★★☆☆☆
Lecture Rating (2.1 / 5): ★★☆☆☆
Difficulty (4.6 / 5):
Workload: 12 hours/week
Pros:
1. The second half of the class was reasonable
2. The homeworks started to click eventually (but at the end)
3. The TAs were pretty helpful
Cons:
1. Lectures were dry and just full of proofs (especially in the Optimization (first) half)
2. The first half had some really hard homeworks
3. The first midterm exam was so hard
4. The textbook (from the second half) was also dry and full of proofs. You have to hunt around for Medium articles that have explanations and sample code
Detailed Review:
I was seriously fooled by the pre-existing reviews and did not expect to get slammed the way I did this semester. The optimization part of the class is super hard and the lectures are just filled with proofs. Not an easy class at all - especially since so much of the HW is built around pulling the proofs into code (and there are no examples, reference points, and the template code is often buggy or confusing). The professors are both nice and involved, but I really wish that the content was easier to understand.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (1.4 / 5):
Workload: 3.2 hours/week
Pros:
1. Doesn't require much time per week
2. Grace days allow for turning in assignments after the due date
3. Labs are straight-forward
Cons:
1. Lectures are a slog to get through (i.e. could be shortened)
2. Advanced topics are a waste because I won't remember them
3. Projects are plug-code-in-and-play type
Detailed Review:
I was underwhelmed by this course, but not because of it being disorganized, or from a bad instructor or the TAs being contradictory/unresponsive as with some of the reviews for other courses. The course is organized well and straight-forward, the instructor knows his stuff and explains it clearly (could even be briefer), and the TAs are the ones mostly running the class and were responsive on Piazza. I may just be growing tired of courses in general as I'm nearing the end of the program, but this just seemed like a missed learning opportunity.
The lectures were a drag for me and too slow (even though I watched them at 2x speed). I may just not be interested in the subject matter overall, but I think if the lectures dug into the details more then I might have been more interested. I think some topics get too much time and attention while others don't.
The whole second half of the semester seems like a waste being spent on advanced topics. There are so many papers covered and I will likely remember none of them. They are all touched on at a high-level and we are encouraged to read the paper. In place of all these advanced topics I wish there would have been more focus on the fundamentals with even more projects, including ones for containers and serverless.
That brings me to the labs - they are too easy, but not because of the subject matter -- mainly because they are plug-code-in-here-to-complete. We are encouraged to read through the rest of the source code, but I didn't find that intrinsically rewarding. I would have liked if we were required to write more code for more of the systems, so that we could anchor in these fundamental concepts. Also, the difficulty curve is not gradual: lab0 and lab1 were too simple and just require filling in a few lines of code; lab2 and beyond get considerably harder and the lectures fail to provide enough detailed information to complete (a lot of extra reading); lab3/4 are around the same level of difficulty.
As a convenience to others I'll post a breakdown of where my time went from week-to-week (as I do with all my other reviews):
- W1: 4.25 hours [2 hours (intro, W1 lectures, dev setup); 2.25 hours (W2 lectures)]
- W2: 0 hours
- W3: 3.5 hours [Lab0]
- W4: 3 hours [1.5 hours (readings); 1.5 hours (W3 lectures)]
- W5: 6.25 hours [0.75 hours (W3 lectures); 1.5 hours (W4 lectures); 1 hour (W5 lectures); 3 hours (Lab1)]
- W6: 0 hours
- W7/W8: 3.25 hours [1 hour (W5 lectures); 0.25 hour (midterm review); 2 hours (midterm)]
- W9: 3.75 hours [1.5 hour (W9 lectures); 2.25 hours (Lab2)
- W10: 3 hours [Lab2]
- W11: 7.5 hours [1.25 hours (W10 lectures); 6.25 hours (Lab3)]
- W12: 3.5 hours [1.5 hours (W11 lectures); 1.25 hours (W12 lectures); 0.75 hours (Lab3)]
- W13: 6.25 hours [1.25 hours (W13 lectures); 0.5 hour (W14 lectures); 4.5 hours (Lab4)]
- W14: 1.5 hours [0.25 hour (W15 lectures); 1.25 (final review)]
- W15: 2 hours [final]
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (2.1 / 5): ★★☆☆☆
Difficulty (1.4 / 5):
Workload: 6 hours/week
Pros:
1. Good curriculum: a lot of important concepts are covered.
2.
3.
Cons:
1. Terrible grading system
2.
3.
Detailed Review:
I didn't have as much of an issue with the course curriculum as other reviewers have had. I thought Professor Walker was knowledgeable, quick to respond to messages, and overall a good professor even if his lectures were a little dry and his lectures note in need of a revamping. I also didn't mind that there wasn't an application part of this course. In my opinion, this course serves as the theoretical foundation that you'll be using for other courses which do have practical applications.
My least favorite part of this course is the grading system. There is going to be variance in a student's grade (sometimes you just have a bad day), but this course felt to me to be one of the only courses where a student can be performing at the 75th percentile in terms of understanding the material but be scoring at the 25th percentile. It's fine when most of the class gets As, but there was (justifiably) pandemonium when an assignment was originally set to be curved to a B.
Let me expand on this further. There are 6 long form written answers homework assignments which are graded by fellow students. I think the grading is inconsistent at best, and nefarious in the worst case since grades are curved. Sometimes students will grade you with their own interpretation of the question which is not correct. Sometimes students won't grade you correctly if you had an alternative answer which is also correct if it doesn't exactly match the answer key.
It is my belief that the highest scoring students are those who attend office hours and get the answers directly from the TA (since the answers provided will match the answer provided in the solution key). It is also my belief that academic integrity is an huge issue in this course (although I don't care to elaborate on this further). All this to say, if this course was ever curved, it would not be a fun experience.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (5 / 5):
Workload: 16 hours/week
Pros:
1. The lectures do a decent job of teaching the material.
2.
3.
Cons:
1. Both Exam 1 and Exam 2 are difficult and test material not directly covered in the lectures and homework assignments.
2. The homework assignments in the first half of the course are very time consuming.
3. Over 90% of this class is focused on theory, with very little time spent on programming or learning how these machine learning techniques can be used in practice.
Detailed Review:
I found this class to be quite difficult. This class assumes a strong background in linear algebra, matrix calculus, probability, and statistics. If your knowledge is weak in any of these areas, I highly recommend that you review that material before the course starts as the first half of the class is already very time consuming. The second half of the class is much more manageable in terms of workload. There are a few Python programming assignments but they are relatively simple and not covered on the exams so you can get by with a basic grasp of Python programming.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (5 / 5):
Workload: 40 hours/week
Pros:
1. Excellent lectures are engaging and thought-provoking
2. Responsive TAs
3. Recitations are helpful with assignments
4. Fair and transparent grading policies
Cons:
1. Low grade distribution and high drop rate
2. Timed exams worth 50% of the overall grade
3. Excessive time commitment just to get a B
4. Occasional conflicting guidance from TAs
5. Overcrowded office hours and underutilization of Piazza
Detailed Review:
The class is a struggle for anyone taking a quantum course for the first time. However, some students have taken multiple quantum courses prior on Coursera, and a few dozen students drop the course before the first midterm as the content monotonically increases in difficulty and complexity; therefore, the final grade distribution is somewhat inflated. The true average in this course is a B- and the course load required to achieve such a grade is significant. There is no curve, exam extra credit is overly challenging, and participation extra credit should not be assumed. While it is possible to succeed in this course without prior knowledge, it is okay to assume ~15% of students will make an A and the average time commitment is at least 20 hours a week.
My main issues with the course are the timed exams and the ineffectiveness of office hours. Exams are timed and do not allow students time to think of the creative, algorithmic solutions that homework problems often require. While homework sets do require students to come up with algorithms to solve complex problems and proofs, there was really no way to prepare to derive these algorithms in 5 minutes on timed exams, making it difficult for most students to get an A.
Office hours are generally helpful but are too open-ended to be as effective as they could be. It would be much better if the TAs coordinated an agenda to facilitate understanding lecture topics and homework sets. Instead, the time is not used effectively since many students do not watch the office hours recordings and instead repeat questions in every session. The TAs try to accommodate everyone at the cost of efficiency while students underutilize Piazza as a resource to get questions answered. Office hours are optional, but I found them necessary to understand the homework sets, but attending the sessions each week did add a considerable amount to the time commitment for this course.
Overall, it's an interesting course that could be improved with better use of office hours and simply curving the course.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (2.1 / 5): ★★☆☆☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (2.1 / 5):
Workload: 3 hours/week
Pros:
1. Assignments are reasonable.
2. TAs were quick to respond to students.
3.
Cons:
1. Quizzes are unforgiving.
2. No curve.
3. Professor was not available beyond the recorded live lectures.
Detailed Review:
The first half of the course feels like a survey of AI, messing around with algorithms like graph traversal. The assignments were okay up until the last one. Most of the effort in the last assignment involved comprehending the instructions and not so much the actual material.
The quizzes were unforgiving (mainly because Canvas does not allow fine-tuning point penalties) and they are not proctored. This means students do not have to deal with the burden of proctored software, but have to deal with inflated quiz scores (the TAs mentioned there were incidents of cheating this semester on programming assignments so I don't think this is a far stretch to imagine). For example, my average grade in assignments was higher than average, yet it was below average across all of the quizzes.
The course would be much better if there was proctoring in the quizzes for a fair grade process and if the professor was somewhat involved in the discussion boards. This is a bigger trend with the online programs at UT— professors are starting to be less and less involved beyond the recorded lectures. Not all courses, there are still some where the professors are *heavily* involved (Android programing and Simpl come to mind).
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (2.1 / 5): ★★☆☆☆
Lecture Rating (2.1 / 5): ★★☆☆☆
Difficulty (2.9 / 5):
Workload: 15 hours/week
Pros:
1. Excellent TAs genuinely invested in your success.
2. Large numbers of attempts on the homework assignments facilitates the learning process.
3. Coding assignments force you to understand the algorithms covered.
Cons:
1. Textbook wholly unsuited for new learners, with weekly high-school-like book reports.
2. Incomplete coverage of important topics in the lectures.
3. Next to no coverage of real-world use cases.
Detailed Review:
The Textbook
Let’s start with the textbook. I see that other reviews are mixed with more positive than negative sentiment. I can’t help but think that most of the positive reviews of the textbook are from people who already had a good amount of knowledge of the subject matter before coming into the course. As a new learner, I found learning from the textbook to be at best an excruciating process and at worst impossible. My biggest complaint is that intuitive explanations are nowhere to be found. The book is also loaded with abrupt changes in subject and notation without any explanation, and oblique statements of important concepts that leave the reader guessing as to their meaning. Kierkegaard is easier to read than some parts of this book. But for the word “introduction” in the title one would think that this book is more intended as a reference for people who already know the subject than it is for the purpose of learning for the first time. For me, most of the actual learning from the book came from poring over the equations and the pseudocode, which are thankfully provided generously.
The Lectures
The shortcomings of the textbook as a learning tool would not have been much of an issue if the lecturers had full coverage of the important concepts, but they did not. The lectures only covered some of the important topics. The others were brushed aside with a statement to the effect of “you can read about this in the textbook.” When the lectures did cover a topic, however. I found them to be helpful in the learning process.
The Homework Assignments / Quizzes
I found these to be quite helpful in the learning process. The large number of attempts allowed virtually guarantees that you will ultimately get every question right. This combined with the explanations provided at the end gives you what you need to learn the material covered. But not everything is covered. I would not have minded a heavier load of these homework assignments in order to get more complete coverage of the key concepts.
The Coding Assignments
I also found these helpful to the learning process. For me, the most challenging part was understanding the workings of the object classes provided and the overall architecture we were required to follow. Once that hurdle was overcome, implementing the algorithm was usually little more than faithfully following the pseudocode from the textbook. I would not have minded more coverage of the later-chapter algorithms in the coding assignments. While the tile coding task was a fun little brain teaser, I see no evidence that anyone has actually used this method of function approximation in the last 15 years. I would have gladly traded this assignment for one involving, say, actor critic.
The Final Exam and Your Grade
Almost everyone goes into the final exam with a perfect or near perfect score. The 25th percentile on each and every homework and coding assignment is a perfect score. Therefore, in effect, your grade rests on your performance on the final exam. There may or may not be a small amount of curving, but I suspect there was no curving with my class due to the relatively high number of As.
BEWARE - the final exam tests material that is not covered in the homework assignments, coding assignments or the lecturers.
TA Sessions
For me, attending the TA sessions was absolutely crucial in both my learning process and in preparing for the final exam. I ended up with an A in the course, and I doubt that would have happened but for my participation in the TA sessions. It’s too bad this review format does not have a field for the TAs. I would give them 7 stars out of 7. I regularly attended the sessions of three different TAs and as each as his or her own style, I greatly benefited from this time investment. I found the TAs to be genuinely invested in the students’ success, regularly going well over the allotted time to make sure that everyone got the attention they needed. If you can’t find the time to attend the TA sessions you’re putting yourself at a disadvantage and missing out on some real learning facilitation and opportunity to connect with others.
Suggested Improvements for the Course
- More complete coverage of key concepts in the lectures.
- Demote the textbook from the primary learning tool to an optional reference.
- Kill the weekly book reports.
- Less emphasis on tabular methods, which have limited to no real-world use cases.
- More emphasis on gradient methods and actor critic methods.
- Less focus on tile coding and more focus on neural networks, kernel methods, Fourier basis and radial basis functions.
- More challenging coding assignments that introduce us to real world use cases.
- Kill or reduce the weight of the final exam and give us a final project.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (1.4 / 5): ★☆☆☆☆
Lecture Rating (1.4 / 5): ★☆☆☆☆
Difficulty (4.3 / 5):
Workload: 20 hours/week
I took this course along with OLO. I liked this more and was able to understand the concepts better. That said, the assignments are very difficult and can feel unnecessarily complicated.