Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (2.9 / 5):
Workload: 5 hours/week
Pros:
1. Cool material, some of which you see nowhere else
2. Easy A
3. Professors are actually alive on Ed
Cons:
1. Lots of self-study needed to understand everything
2. Horrifically ran course this semester
3. Unclear expectations on assignments
Detailed Review:
Okay, first, let's talk about the horrific way this class was run this semester. So, peerceptiv is garbage software with a ton of issues. That isn't the class' fault, but ML had figured out workarounds with peerceptiv long before APM did.
There were also not anywhere near enough TAs. The one or two office hours I did go to were well done, but the Ed board was pretty dead the entire time. Most of the time, we would ask the same questions over and over again and they remained unanswered for over a week. Just painful.
There are two HW assignments most weeks: a peer-graded one and a staff-graded one. You get a rubric to grade peers for the peer graded one which has solutions. The staff-graded HW has no solutions though, so good luck figuring out what you did wrong. The turn around time has been absolutely atrocious. I'm finished with the course now and I just got back the HW grades from 3 weeks ago. A lot of the time, the grading is off since expectations weren't clearly outlined and the rubric expected more than the problem statement said. Regrades have also taken an eternity to be done. If you ask for clarification on what you got wrong on staff-graded HW, good luck on getting an answer back anytime soon. I think the TAs are just completely overworked.
Grading is all HWs and little mini quizzes every week. Some of the quizzes are some BS but overall, it should be very doable to maintain a 94+ average with them. The HWs, with some regrading, should also be easy to maintain 94+ with. Your lowest entire week (so quizzes + any HW) is dropped at the end too which makes it even easier on the grade.
As for the material and teaching, the first half of the course to me just felt like reading formulas off of a slide. Very little intuition on why things worked and a lot of "plug and chug". It was a lot of MVN, applications such as geospatial models, and time series. So, a lot of understanding the material was self study. Unfortunately, the book provided for this half of the course wasn't too great either in my opinion. Would recommend reading https://link.springer.com/book/10.1007/978-3-319-29854-2 (free with UT login) instead. Much clearer.
The second half was much better in my opinion when it came to lectures and work. It was mostly about like matrix methods. Sure, we've seen SVD/PCA a gazillion times before but there's a lot of cool new methods like spectral clustering and a lot of blockmodel stuff that was great to learn.
One plus is that the professors actually chatted on Ed every once in a while. That is a huge plus since that isn't really the norm in this program. Maybe, having two professors in a class helps to free up time for them to be active in a forum.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 9 hours/week
Pros:
1. Pretty good theory course
2. Manageable workload
3. Prompt Piazza responses
Cons:
1. Almost no applied examples
2. Tight scheduling - 8ish day window from material release to due dates tricky if you're juggling other responsibilities
3. Peer grading
Detailed Review:
So look, if you want to know the details behind why various types of regression are mathematically sound, this class class is great. If you want to know how to use various types of regression in practice, the class is pretty much useless. I'm biased because I would have preferred much, much more focus on applications. But hey, it is what it is. Given the course material, the class was ok - lectures made sense, staff was reasonably responsive (if sometimes defensive) on Piazza. Office hours fairly helpful too. Assignments are majority peer graded, which on proofs and stuff is hard (really tricky for people just learning the material to tell if an approach that's different from the answer key is valid)
At some point, I stopped watching the lectures and just read the lecture notes, referring to the videos only for tricky parts/things on the homework. Didn't regret that choice. Read the supplementary material too - maybe before engaging with the lecture materials.
Skip the variable selection homework - it's by far the hardest.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (2.1 / 5): ★★☆☆☆
Difficulty (4.3 / 5):
Workload: 15 hours/week
Pros:
1. Learned new things
2. Could drop 2 assignments
3. Good to start with R coding.
Cons:
1. Recorded classes were not great
2. Needed to do a lot of research to understand some assignments
3. No textbook
Detailed Review:
As there is no textbook, finding material with the same approach as the professor was not easy. I had to look for a lot of information before completing some assignments. If you have a recent background in Statistics and Math, probably you can do well in this class.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (5 / 5):
Workload: 35 hours/week
Pros:
1. Pretty good coverage on advanced algorithm topics
2. Challenging problem sets (homework)
3. Good TA support
Cons:
1. Needs improvement on helping student to better understand the content
2. Very difficult exams
3. Time dedication alert - easily 30+ hours/week for some
Detailed Review:
This is arguably the most difficult class in this MSCS program, and I'd agree. It has never been easy for graduate level algorithms class, so even if I kind of expected that in the beginning, I still feel underestimated it. I usually spend 30-40 hours per week watching lectures, understanding concepts, reading books, and doing problem sets, but yet still don't feel very confident throughout the semester.
The topics themselves are actually interesting. But the problem is that I don't think professors presented them in a way that makes it slightly easier for students to digest the content. There are a lot of dry proofs that students have to exactly follow, or otherwise it is easy to get lost. The class could have been more fun.
Although no textbook is required for this class, most of the content follows the classic CLRS and Algorithms (by Jeff Erickson). Besides those, I have to search for online resources to better digest the content. Good thing is these topics are wildly discussed so I believe you could find a great number of supplementary materials to help you get through.
I put challenging homework as pros because I do feel it valuable to dig into those problems, which helps me understand these topics. On the other hand, some of them are really challenging and painful - some questions themselves are even difficult to understand, and the suggested solutions sometimes are unnecessarily convoluted. Problem sets grading are done by peers, and it is not rare you get ridiculously harsh grades from frustrated students. When it comes to the exams, they are very difficult. Given three hours, students need to answer 9-10 questions. Score shows the top 25% get about 70%-80% of the points and the median get about 60%. The exams did post a lot of pressure.
Good news is that the curve in the end is kind of generous - getting 80 will guarantee an A range (A or A-) and for Spring 2023, the A- cutoff is 77 and B- cutoff is 60.
Walking out of the class, I do feel that I have much better understanding in some of Leetcode's medium to hard questions. I'd recommend the class to people who want to focus on software engineering direction, after all, algorithms are something we can't skip, but prepare for some level of sacrifice of life and/or work. Also, you have to be self-motivated, and in return it will be quite valuable for your career.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (4.3 / 5):
Workload: 8 hours/week
Pros:
1. Great community of students who share their ideas and approach on Discord.
2. Flexible and responsive professors.
3. Reviews for the exam.
Cons:
1. Learning philosophy relies on studying for exams and doing homeworks as opposed of doing something practical. No projects and no research.
2. Feels like undergrad class.
3.
Detailed Review:
If you come from a stats/math background this will probably be easy for you. I come from a computer engineering background and haven't really touched stats/calculus/theorem proofs in a while, so it was a bit difficult to catch up with some of the problems. The stats parts was easy for me but probability was a bit more difficult. The professors are experts and good but I wish they relied less on quizzes and midterms. The graduate courses that I've liked the most are about doing research or doing projects. Nevertheless, I did ok in the course with some effort which can be challenging if you are working full-time. I learned a lot from the other students and external resources.
Don't get misled about the difficulty of the course by the previous reviews. Some students didn't pass this course. For some it was really easy, for others very difficult and for others like me it was average difficulty. It depends on your math background.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (5 / 5):
Workload: 30 hours/week
Pros:
1. The professor is excellent
2. I have a good understanding of data structures
3. I learned (all self-taught) a ton about Python but it wasn't enough
Cons:
1. There is no opportunity to learn to optimize from a solution
2. There doesn't seem to be any data science relevant examples or application
3. You will have to teach yourself Python if you are not intimately familar
Detailed Review:
The lectures are all well structured and easy to watch. Prof Lin utilizes a "student" to fake ask questions to keep the flow more natural and from being too dry. The concepts are presented in a way that are easy to understand.
The projects increase in difficulty from moderate to all-consuming. He says you should have had a high school coding course or one semester of college coding before enrolling- but he clearly has no idea what is being taught in a general coding class. I needed a couple of years of coding courses before I would feel ready to jump into this one. If you are not a daily Python programmer- it is not impossible- but be prepared to spend 20+ hours per week on coding.
These projects are set up with abstract classes and provided doc-strings and function structures in a way that at first makes you think they will be straightforward but are really set up to optimize the ease of using an auto-grader to process them. The structure ends up turning what could be maybe 25-50 lines of code into a monster coding exercise. They will not show a solution. They will not share a working copy. They will not give you feedback for improvement. They will never mention the projects in lectures. Trying to get help from the TAs is very difficult (though the TAs are very helpful and were very patient and giving of their time). With hundreds of people in the course, you can expect to wait more than 2 hours on Zoom before they get to you if you need help. Expect to teach yourself nearly everything you need to know. After the first project, there was an adjustment to allow for people to work in groups. I tried this and it was miserable so I plodded along doing each project on my own. You can use up to two slip days per project if you need extra time.
On the bright side, I feel like I have a much better handle on Python and implementing test cases, and developing tests to exercise my code. I really wish the projects were data science angled at least- there seems to be a disconnect to application for most of the courses I've taken so far in this program.
Bottom line- you will only learn what you teach yourself. There are so solutions released so there is no way to compare your implementation and improve. I felt like whatever I self-taught had no opportunity for correction or growth. What bad habits was I teaching myself? As the projects progressed, you plodded on- carrying all your prior mistakes with you. By the last two projects, I was so stressed I was making myself ill. The course went from requiring 15 hrs a week to over 30. I finally dropped it two weeks from the end, even though I had a decent grade because I couldn't keep up with the time required. The course says you need one semester of college coding before starting- this is highly inaccurate. You need at least 18 hours and they need to have been recent. I have recent Python coding experience and am a competent coder in multiple languages- but it did not matter. The professor was expecting high coding competence through the program coordinators said it was for students with limited coding experience. He seemed genuinely shocked that many of us did not have whatever specific coding experience he assumed so he allowed some group work which I did not have time to do- which led to grade punishment. With the course on a curve, you are punished if you don't come in with his coding experience, punished if you can't work in a group, and then left to rot in Zoom hell for hours if you need help. On top of that, there are constant e-mails warning that all cheaters will be reprimanded- this course is absolutely not ready for the edX format. It's taught by a professor with past trauma or something with cheating students. Discussion is not allowed, there are no solutions or any code for any other implementations separate from the projects that you can learn from. The textbook is in Java and the quizzes are so obtuse- you can spend literal hours studying from multiple sources on the material covered, watch lectures from other universities on the data structures so you can get an additional perspective, and still score higher by guessing.
Take this course if you want to be fully humbled and then whipped until you throw up for not feeling humbled enough. Horrible course.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (2.1 / 5): ★★☆☆☆
Lecture Rating (2.1 / 5): ★★☆☆☆
Difficulty (0.7 / 5):
Workload: 3 hours/week
Good course if:
(a) you are completely new to ML (not even Kaggle), or,
(b) you need a chill semester due to work/life stuff, or,
(c) you need one last course to finish the program, and don't much free time.
(d) you know ML/Stats theory but have never touched a Jupyter notebook (unlikely).
Bad course if:
(a) you are decent at practical ML and want to get a better theoretical understanding of...anything.
(b) you enjoy challenging, stimulating courses.
=========
Pros
=========
1. This course requires no ML knowledge to start. It is a better intro to ML for absolute newbies than Klivans' "Machine Learning" course, but worse intro to ML than "Deep Learning". It's basically a Kaggle 101 course.
2. You are virtually guaranteed an A if you skim the videos for the quizzes, and put in even a small amount of effort in the final project. In Fall2022, an A was 90+, and the **median** grade on the quizzes was 58/60, so you need ~32/40 i.e. 80% on the final project to get an A.
3. Unlike other courses in the program, this gives you a Breadth of ML knowledge, instead of depth. It is quite practical advice. The slides and Jupyter notebooks were good reference material.
4. Final project is open-ended and encourages you to do research-y stuff to put on GitHub and "build you profile" (I work in ML Science and let me tell you, this isn't enough to get a job, but might be good for a thesis later on if you do something unique).
=========
Cons
=========
1. I learned very little. There are no coding assignments, and the quizzes are not at all challenging, just reading-comprehension tasks. For Quiz 6, I started only 2-3 hours before the deadline, and did Ctrl+F on a few words from the question, found the answers, and got 9/10. I did not cheat in any way; the quizzes are open-book, and it's just super easy to lookup the answers in the slides.
2. The wording of every quiz was incomprehensible; you need to turn each option around a few times to make sense of it. Every single Quiz had complaints about the grammar. Example quiz option (values changed): "To contain more than 12.3% of the variance for the Strong SO2 Band, using the first eight components fit the purpose; the same number of components can be used in both Weak SO2 Band and Oxygen A band". That said, the head TA was very responsive on Piazza.
3. It's basically a Kaggle 101 course; if you learn any theory from this course, it is entirely by accident. Sometimes the instructors voice incorrect opinions, e.g. Tensorflow is more popular than PyTorch (the opposite has been true since 2020ish).
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (3.9 / 5):
Workload: 15 hours/week
Klivans' lectures were engaging but I did find the material a bit hard to follow. I did think Liu's lectures were straightforward, and his supplemental notes more helpful than those from the first half of the semester.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (1.4 / 5): ★☆☆☆☆
Lecture Rating (1.4 / 5): ★☆☆☆☆
Difficulty (2.1 / 5):
Workload: 7 hours/week
Pros:
1. It's true that it's a relatively low time commitment
2. It's true that it's easy to get an A if you put in the minimum effort
3. I actually found the topics fun and the labs themselves useful, at least the ones that worked (as well as sources cited in the lectures/labs, which explain topics much better than the professor and TA do)
4. The project is self-directed and can be very rewarding and good for a portfolio if you put in effort
Cons:
1. The lectures and lab videos are hard to understand and don't add much if any value
2. You can't replicate some of the labs because of data issues, outdated functions, etc. (has not been updated in a few years)
3. The quizzes are honestly not as easy as everyone claims if you don't have prior knowledge - the lectures by themselves will not help you solve all of the problems
4. The project can feel a bit overwhelming if you don't have the background (but you will still get 100% as long as you put in a modicum of effort)
Detailed Review:
I felt like I should leave this review as someone who does not have any ML/engineering background (only programming) and hasn't taken a math class in 10 years. The ratings are very skewed to people who do have that background, and if you don't, you shouldn't come in thinking it will be effortless. This was my second course in the program after Android Programming.
It's still probably the easiest course in the program, but I spent a good 5 hours a week watching the lectures (because I had to keep pausing and looking up other resources, since they are terrible at explaining concepts and sometimes assume prior knowledge) and replicating the labs (not required but very helpful in my opinion). The professor and TA have very strong accents that are very hard to understand, but that's fair enough because all they do is read from the slides and lab files, which you can just read yourself. Sometimes there are grammatical errors in the actual slides and quizzes though, which can occasionally interfere with meaning.
And then I also spent an hour or two on each quiz because I often had to research concepts or how to solve the problems (and yes, it is a bit hard just to cheat by googling all the answers because a lot of the problems to solve are in the form of images). You're not technically supposed to use other resources for the quizzes, but without prior background, it was pretty impossible not to, even though I thoroughly watched, engaged with, and/or took notes on every lecture and lab. Still I got 70% on one quiz (which ended up curved because enough people messed it up, so I ended up with 100%) and one wrong on another which wasn't curved. The rest of the time I got 100% with my painstaking efforts.
Half of the questions are word salad multiple choice questions that are usually verbatim somewhere in the lectures and are meant to confuse you. The other half are hands-on problem solving, either math formulas, functions that can be programmed, or sometimes just reading a table or graph. Some of them are very easy, some are harder. It's not that they didn't cover these topics in the lectures, but some of them they just glossed over saying, "We're not going to go into detail on this formula but you can read about it on your own time" as if you don't really need to understand it. But then lo and behold, you have to solve that formula in the quiz.
I actually enjoyed the class and found it rewarding in the end, but it was more for the subject matter than the actual content or format. I suppose I could have learned it on my own for free and more enjoyably. I found the quizzes very stressful and I spent quite a lot of time studying resources other than those provided, which I don't think I should have had to do.
The project was more rewarding. I liked that it was individual and open-ended so I could pick a subject that I found interesting, and use that to really go in depth on ML literature and methods. A lot of people on EdStem seemed freaked out by 30 sources required (including 15 scholarly sources), but once I had my topic and started searching, I sailed right past that minimum. They are extremely lax about any formal requirements and as long as you put in an effort you will probably get an A. My project was definitely not advanced by any means but I worked hard, did a lot of research, tried different techniques, and got 100%.
If you really want the class to go smoothly with little effort and stress, I would recommend brushing up on college math subjects and doing some machine learning tutorials on Kaggle to prepare. Don't go nuts but just a little bit of prep work.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (2.1 / 5): ★★☆☆☆
Difficulty (2.9 / 5):
Workload: 12 hours/week
Pros:
1. Good intro to concepts in ML
2. First 2 hw hard, but after that is rather easy
3. Exams seem fair
Cons:
1. First half has lots of math, and prof expects you to know all the calculations
2. First 2 HW are very hard
3. Too theoretical, less practical
Detailed Review:
The class starts off very hard, and can be very intimidating, as I spent an insane amount of time on the first 2 HW's. Would recommend attending the office hours by the TA as they give many useful hints. This class does a good job of covering the mathematical side of machine learning, but is lacking on the practical side. Even the HW, even the programming parts were a lot of fill-in the blank styles of code. The exams are both fair imo, though I did like the second exam more. in terms of hours of work, it was more than average on account of it being a summer class. TA's were in general quite helpful and responsive, though the profs seemed to be MIA. Lectures for the first half also left something to be desired as they seemed to be recorded during the prof teaching the class in person so there are awkward breaks while he asks the class a question, and sometimes its a bit hard to hear what students in the class are saying.