Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (4.3 / 5):
Workload: 10 hours/week
Pros:
1. Lectures clear
2. Book in second half useful
3. Homeworks 3-6 easy
Cons:
1. Learn little relevant to machine learning in practice
2. First two homeworks are difficult
3. First few weeks are pretty grueling if taking during the condensed summer semester
Detailed Review:
I took this class in the summer - the first few weeks were a lot of work - pretty stressful to balance while also working. You can probably afford to phone it in on the first homework and drop it, since it's the hardest by a significant margin.
Other than that, the lectures were fine. The assignments were fine. I thought the tests were tough - I was in the neighborhood of 80% on both. This'll be the first class of the five I've taken so far where my grade is below the average, so maybe it's just me. My skillset is definitely more programming than math, and this was certainly a math class, despite the programming components of the assignments.
Speaking of, you won't come out of this class knowing much about how to implement machine learning in real life. That's a bit disappointing that a semester-long class can't do more in terms of preparing people to implement ML algorithms in the wild. But what can you do - it's not like you can take a different class and still get your degree.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 13 hours/week
Pros:
1. TAs are responsive on Piazza and provide very thorough answers.
2. This is a solid introduction to the math behind machine learning. Having taken a few applied machine learning courses, I felt like I learned a lot in this course.
Cons:
1. Professors are not involved. I'm not really sure what I was expecting, but having just come from Linear Algebra, I was expecting some professor interaction.
2. TA's seemed like they were essentially brought on, given the lectures, the homeworks, and the homework solutions and that's it. It was often apparent that they hadn't looked at the homework until they were asked a question about it. Office hours were pretty useless. I attended two office hours, and then decided it was a waste of my time.
Detailed Review:
Mathematical maturity is assumed in this course. You should be comfortable with multivariable calculus, probability, and linear algebra. I took the linear algebra course in this program prior to this course and would recommend doing the same if you're not super confident in linear algebra already.
Take the workload metric with a grain of salt. In the first half of the course, I spent upwards of 20 hours a week on the course. In the second half of the course, I spent around 8.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (5 / 5):
Workload: 22.5 hours/week
More work load with busy schedules and more number of problem sets and tests.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.1 / 5):
Workload: 7 hours/week
Pros:
1. Good balance of breadth of topics covered and depth of material within those topics
2. Topics build nicely on each other
3. HWs and exams felt manageable
Cons:
1. Theory heavy, not enough direct applications discussed
Detailed Review:
I thought this was a well put together course in Optimization. It is certainly a math class, there are some assignments at the end that require some minimal Python coding but other than that you are working through pen-and-paper examples and proofs. Would have been interested to implement more of the algorithms/approaches discussed, but overall the material was still nicely presented. TAs were great for our semester too.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (3.9 / 5):
Workload: 15 hours/week
The course is fine and very relevant. The teaching style however leaves a lot to be desired for, particularly for Prof. Klivans. Even his interactions in Piazza makes him come across as "standoffish" and that is not a positive portrayal of your persona, no matter how smart and bright you are. In a nutshell this is where I had problems with his half of the course: 1. The lecture method (flipped-classroom) was at times hard to follow, particularly on those awkward silence moments where students clearly had NO clue of what was going on. 2. This style made the content to be portrayed in a somewhat messy way, which triggered me to do much more self-study or look for alternative sources of learning as the lectures seemed to be insufficient, even to complete the homeworks (that are supposed to be based on the content of the lectures, or so the average person would think...). 3. The review exercises for the mid-term were a waste of time as the questions were not slightly close to what was asked in the actual exam (yes we can agree the concepts were there but in my opinion this was misleading, particularly when compared to the same review exercises for midterm 2). 4. The actual first midterm had exercises that were not addressed either in homeworks or in the lectures, so then I asked myself, what are the learning objectives of this first half of the course, and why were these type of questions never addressed in the lectures / homework before (what's the point of having those if not to prepare you for the examination anyway?). Prof. Liu's half was overall much more straightforward, useful, exercises in HW related to the exam. If anything, I wish we would have had a bit more heavy workload on homeworks vs. the first half (maybe more on Neural Networks or more theory exercises on Kernel Method, for instance). All in all, I think this was a good course, I seem to have issue with the first half of it and how it was taught and assessed. One thing I still don't understand is, given how theoretical this course is, how did it make to be part of the "Applications" requirement? This should fit better in the "Theory" bucket as the programming assignments were really not that involved.
Expanded Grading:
Workload: 20 Klivans, 10 Liu
Rating: 2 Klivans, 5 Liu
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (2.1 / 5): ★★☆☆☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 15 hours/week
Pros:
1. Lectures and Course Website are well made and easily accessible
2. A decent chunk of your grade is based on HW and Edx completion
3. Provide a lot of good external material to learn from as well
Cons:
1. Course is no longer taught by the ones who made the lectures, making it seem oddly disconnected from the rest of the course
2. T.A support is limited to nonexistent, they also don't seem eager to help students learn
3. A lot of the questions are phrased and structured in a way that makes them seem open ended, but the TAs themselves only grade in one rigid way
Detailed Review:
Overall the course begins with a ton of useful information, but that goes along with a ton of HW and assignments. It can be difficult to get all of it done, especially if you're working full time, however the material itself is well presented and intuitive to learn. The course slows down tremendously after the first midterm, but that coincides with the material being less generally useful and very specific towards implementations of specific algorithms that don't seem useful to other classes/material we'll probably see in the future.
My biggest gripe with this course is with the Final and the TAs/professor. The difficulty of the final is considerably higher than the previous assignments (especially the programming assignments) and a few of the questions are so confusingly worded that it leaves you spending more time thinking about what specific, narrow answer they want out of you rather than actually trying to engage with it in a proper way. This isn't helped by the TAs who could probably just be replaced with robots at this point. They respond with either one word or one sentence answers and will not hear you out at all if your answer is even slightly different from what's written on the answer key they were likely given.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (3.6 / 5):
Workload: 20 hours/week
Pros:
1. Well-designed programming projects featuring either games or data structures. Could be even more fun to revisit them after the pressure of the course is over.
2. Generous late project policy with six "slip days" .(Note that this does not apply to quizzes)
3. Professor knows his stuff and lectures are old-school (blackboard) but interactive with an assistant or TA as "student" .(somewhat a refreshing sight and deparature from profs purely reading powerpoints and making you sleep)
4. Professor has a sense of humour during lectures.
Cons:
1. Somewhat lack of transparency in grading. For example, lots of hidden test cases which may or may not be related to the published sample tests (will be a greater issue in later projects).
2. You won't really know your performance/grade until the end of the semester. Also, if your cohort performs differently than other recent semesters' cohorts, the grade cut-offs or curves can turn out differently than expected (e.g. in Spring 2025, the cut-offs for B and B- are way higher than 3 previous semesters).
3. Information overload during certain lectures. Also, many lectures won't really directly prepare you for the projects.
4. Some students may feel intimidated with the class atmosphere, including with respect to the professor, e.g. very low involvement in Ed Discussion forum, Somewhat overemphasis on "no whining" (even spelled out in the syllabus), etc.
Detailed Review:
This class was supposed to be UT MSDS's introduction to programming and toned down compared to MS CS's "Algorithms: Techniques and Theory". But its scope is still quite ambitious. First, it's supposed to teach data structures (lists, stacks, queues, trees, graphs, etc). Next, it attempts to teach programming fundamentals including writing your own test cases and debugging. Lastly, it aims to teach problem solving skills. Greater emphasis is on application instead of just knowing the topics.
In practice, the learning curve in this class still quite varies (Even the professor acknowledges that and admits in the syllabus that some people will spend 3-5 hours only on an assignment, while some will need to spend 20-30 hours). Complete beginners will find it very difficult, while those with good programming background will find it very easy.
Actually, once you identify and get the specific needed skills/topics and have a good working outline, the projects will be easier to deal with. In fact, especially for the first two projects, to save time, I recommend drafting/DOING THE PROJECTS IMMEDIATELY once they are released. You can even do them before finishing the lectures if you know what you're supposed to know and do. (But for the quizzes, don't ignore the lectures)
First, note that the course and program prerequisite generally includes knowledge of basic Python programming. Prior to entering this class, you're supposed to master functions and dictionaries already. Even better, know basic OOP (you may wish to enroll in other online related courses if you want).
Focus on these topics for the projects:
Projects 1 and 2: Basic python syntax, functions and dictionaries (Dictionaries especially for the second one)
Projects 3 onwards: Recursion and iteration. Also DFS and tries for project 3.
Projects 4-5: Binary search trees, heaps, B-trees, and related operations
Project 6: Graphs, BFS, DFS, Djikstra's Algorithm.
But for the quizzes, you'll also be needing the other lectures so do try to finish them (and read up in other sources as needed). Do note that the main textbook is in Java. Part of the reason with this is that the professor wants to emphasize programming and problem solving aspects that stay constant even as software, hardware, etc. evolve from time to time. The syllabus also provides two supplementary references to look for (you may look for others too).
Overall, the class is introductory level but can also serve as a filtering subject of who has the necessary programming background.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (3.6 / 5):
Workload: 10 hours/week
Pros:
1. Deep dive into nuts and bolts of the models
2. Helpful TAs
3. Second half was better
Cons:
1. First half of the course needs a revamp
2. Exam has huge weightage but homework was demanding for first half. I suggest to make it 50:50
3.
Detailed Review:
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (2.1 / 5): ★★☆☆☆
Lecture Rating (2.1 / 5): ★★☆☆☆
Difficulty (2.9 / 5):
Workload: 6 hours/week
Pros:
1. Decent textbook
2. Not a huge time commitment / easy to pair with another course
Cons:
1. Course primarily self-taught using textbook, video lectures not too helpful.
2. Final exam
Detailed Review:
Not a bad introduction to RL, you will need to do more self-study if you want to delve into more recent developments. The course if primarily self-taught using the textbook, the lectures are meant to just supplement. Past the first three weeks, I just stopped watching them altogether as they aren't necessary to get through the homeworks, program assignments, and exam. This was a bit of a letdown, as watching great lectures is one of the best features of this program. Not to say the videos provided were bad, just lacking a lot of material. Textbook wasn't bad either, but it did seem like certain sections were lengthier than they needed to be. Recommended looking at the homework questions before you read the corresponding chapter to save yourself time by just skimming through the irrelevant sections.
Homeworks aren't too bad. They are multiple choice and fill in the blank style of questions. You get anywhere from unlimited attempts for numerical answers to one chance on true/false and somewhere in-between for everything else. All the information needed to answer the questions can be found in the textbook.
The programming assignments were mostly just implementing the pseudo code from the textbook into python. They were not too bad, and I got them done faster than most other programming assignments in other courses like DSA, NLP, and DL. You get infinite tries to pass the auto grader. It's useful to take NLP or DL before this class if you haven't used PyTorch before.
You also have to submit a summary for each chapter. This was honestly the most annoying part of the course. I find writing required notes and summaries quite tedious and not really useful to learning the material. The TAs go through a random sample to check for completeness and dock points if necessary, so you unfortunately have to put something meaningful to ensure full credit. Honestly reminds me being back in grade school, which is frustrating considering this is grad school.
Final exam was basically a timed version of the homeworks with only one attempt. It wasn't too bad, but you did need to know the material to get though it in time. Especially for the numerical answers that required computation.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (2.9 / 5):
Workload: 10 hours/week
The course was very theoretical. I had some exposure to theoretical ML and related work, but most of the materials were quite new and I learnt a lot. The video format could be improved, however, as the first part was mostly a recording from a past semester, and hand-writing was a bit hard to follow.
I think both theory assignments and exams were well made in that the students really have to study the materials to do well. The programming assignments were a bit dissapointing because most of them were just importing skit-learn and implement on a toy dataset (and there are countless of examples if you google it). Real ML work is try and error, not finding a fixed correct answer. It would be even better if they made us imtplement the algorithm from scratch, or gave us dataset and we do a number of try and error to improve performance etc.
Overall, if anyone is looking to learn fundamental theoretical ML, this course is good. But you won't learn much from programming assignments unless you are completely new to Python/numpy etc.