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 (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.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (3.9 / 5):
Workload: 18 hours/week
Pros:
1. Heard the course was revamped. They do give you all of the homework solutions. If they made you figure those out on your own before... holy would this class be ridiculous.
2. Lectures were surprising all that were needed most of the time for most of the quizzes
3. Lecture material and subject is an entirely different matter, but the professors did explain things well. I don't think I ever had any trouble understanding or following their logic.
Cons:
1. Was hoping it would make me better at Leetcode. Honestly doubt it, but I think the stuff they do cover is probably harder than any Leetcode hard you would see, so it probably makes understanding harder algorithms concepts easier
2. Every single week you have a quiz. And only a 48 hour window to take it from Friday noon to Sunday noon. Very annoying since of course I am studying over the weekend, and then waking up early on a Sunday to take the quiz in time. Wish they would make a better window.
3. Some quiz questions there's no way people figure it out in the small window. I really hate the quiz format since I think it just encourages everyone to use LLMs to take the quiz (I did not do this at all, and you are required to affirm you do not use any external resources). I'm probably just dumb tbh, but seeing the quiz averages and distributions really made me think most people were using LLMs.
4. Grading was awful for this class. TAs took forever to grade quizzes so you really never knew your standing in the class. At some point there was even like 5 quizzes you still did not have have a grade on.
Detailed Review:
Textbook is relevant, but you can just rely on the lectures and the provided homework answers, so skip reading it.
Entire grade is just based on the grades of your quizzes. They do drop your two lowest grades. And quiz answers are proofs so lots of writing.
I pretty much covered everything above, not much else to say. Was hoping to gain more Leetcode related stuff from the class, but we did not write a single line of code.
Favorite thing I learned though was P and NP, that always sounded so mysterious but it makes a lot of sense now.
Rated Piazza support lower because grading frequency sucked but they did have recorded office hours which was a huge plus (if you were interested in them, I personally did not listen to them).
Took this class with Operating Systems, and that was... quite painful at times. I think this class actually is fine to take with another class if you're trying to finish the program ASAP. Mainly because the workload is very consistent, there's no project or final exams to worry about. You get into a pretty consistent routine with watching lectures, studying, and taking the quiz each week.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (2.1 / 5): ★★☆☆☆
Lecture Rating (1.4 / 5): ★☆☆☆☆
Difficulty (4.3 / 5):
Workload: 20 hours/week
Pros:
1. The textbook is great and (somewhat) helped me understand the theory needed to complete the projects.
2. The PintOS toy operating system is used for grad and undergrad classes at other universities, so lectures and helpful resources are somewhat accessible from KAIST, CalTech, Berkeley, etc.
3. You can't finish the projects without understanding the material on a fairly deep level.
Cons:
1. The lectures on edX weren't the best. They were out of order, sometimes didn't cover the basics, and overall felt lacking in terms of cohesion and continuity with the rest of the course content.
2. Group projects can be a blessing or a curse depending on your group—few project tasks could be done in parallel.
3. Engagement on ed was lacking, basic questions went days without an answer or were given short shrift.
Detailed Review:
As mentioned in every review from this semester, the key takeaway is that this course has changed from previous iterations. The new set of PintOS projects are long, grueling, and lacking in terms of documentation and support from the course staff.
The midterm and final exam were just comprehension checks for the lectures. If you watch all of the lectures, take notes, and put together a solid notes sheet you will do well. No extra studying needed.
The projects:
Project 0 Wish Shell — Just a warmup for writing in C... briefly touches PintOS but is quite easy. If completing this project is a struggle then the rest of the class could be a disaster for you.
Project 1 Threads — Already a tough project with a huge amount of edge cases that are tough to test or catch. Thankfully the test suite was quite forgiving, but even a solution that passes all of the test cases is likely to be riddled with bugs that would bring the OS down under a stress test.
Project 2 Userprogs — Same difficulty level as the previous project, but now you start to touch a larger portion of the codebase. The tricky thing here is that it is frustrating to test until you have your stack loaded correctly... and achieving just that first part is very time consuming.
Project 3 Virtual Memory — A significant step up in difficulty from the last two projects. Again, brutally hard to test. You need a good mental model of what should happen before you start coding anything. There are some peculiarities about how the base virtual memory system is implemented to PintOS that you won't understand until you really dive deep into trying to understand the codebase. This is where the KAIST lecture videos are needed... without them I wouldn't have even known where to start.
Project 4 Filesystems — Ever so slightly easier than Project 3, but this project touched a greater portion of the codebase and required more code. The frustrating thing here was that you needed to write an absurd amount of code before being able to run a single test.
Overall, I can't claim this wasn't worth taking—I did in fact learn a lot about operating systems... but at what cost haha!