Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.1 / 5):
Workload: 8 hours/week
Pros:
1. Great lectures and active participation from the professor
2. Awesome support from the TAs
3. Covers state of the art techniques and projects to learn them first-hand
Cons:
1. Projects are auto-graded and based on performance mostly - lots of hyper-parameters tuning.
2. Interesting field, but very niche - many of the techniques might not be very applicable to other ML/CS areas
Detailed Review:
This is a well taught course that surveys quite a few different methods in NLP. The professor and TAs were great. The projects are not particularly difficult although some parts can get tricky (e.g. Viterbi, seq2seq, etc). Once I got the core implementation down, I spent most of the time on hypertuning to reach the required level for full marks. Looking back, I'm not sure if that was the best time spent learning the course. The final project is much more open-ended and exploratory - although by then I had a 120% average thanks to extra credit, so I spent less effort compared to earlier projects and focused on other courses. While I enjoyed the course, I wonder how useful this course is. Even as a data scientist there are fairly limited use cases for the topics covered, considering SOTA models will require massive computing power and are already highly optimized. Since this is not a program (and course) for research I thought it's a valid question. 9/10
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (0.7 / 5):
Workload: 3 hours/week
Pros:
1. Covers a lot of material in R, yet the pace of the course is very well managed
2.
3.
Cons:
1.
2.
3.
Detailed Review:
I had never used R before and this course did a good job providing the foundational knowledge to manipulate and plot data in R. Overall, the grading of the course and amount of time required to complete the homeworks and projects was minimal. Despite this, I feel like I learned a great deal.
I purchased the textbook for the course, but never opened it, as the lectures did a good job covering everything.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (4.3 / 5):
Workload: 20 hours/week
Pros:
1. A challenging survey of data structures and algorithms, good to get you into an analytic mindset
2. Lectures are interesting but somewhat incidental to the quizzes and projects
3. An effective if challenging way to learn/master debugging, testing, and coding if you need it
Cons:
1. Little to no feedback on performance, very frustrating to not know what you did wrong and how to improve
2. Can be very time consuming if you aren't a day to day codesmith
3. Content is generic analysis and not oriented towards data science
Detailed Review:
Know recursion before you begin. Trust me, if you don't have your head around recursion you will suffer. It will help to bone up on big-O analysis because that is where things get serious first. In general I found googling more effective than the course texts throughout.
Spend as much time on your test cases as your code.
This was the first course I took. I came to the MSDS program with decades of experience developing technical software, including more than 20 years as an architect. Prior to this course, I hadn't taken a university class in well...ages. I was not well calibrated on the effort. I don't write a lot of code these days in my day job. I did know python. Take the preceding into consideration in reading the following.
The lectures are interesting, and the rhetorical technique of having a student plant to make it conversational is effective. Prof. Lin is a good lecturer, very traditional old school type. it works. The lectures are interesting and engaging, but more related to the quizzes than the projects. The course is designed to get students into the mindset of analysis and design in general rather than data science specifically. As such the material is garden path CS. The quizzes varied in difficulty greatly, and I was surprised more than once on the depth of the questions or the subject.
The projects were a variation on the lecture topics, loosely. The projects as noted in other reviews were very much tuned to scalable auto grading. This is the most significant problem with the course. The coursework is so focused on scalable auto grading and cheating prevention that it becomes nearly entirely devoid of learning opportunities, all assessment and no learning. There is essentially zero feedback on your work. The other problematic issue with the projects is the opaqueness of the grading rubric. The projects come with skeleton code to get you started including skeleton test cases, but zero information on what behavior is to be assessed. Time? Space? Negative test cases? Edge cases? You only find out when you fail a test case and then only can attempt to infer what exactly the criteria was from the test case name. If you leave a minor bug in the wrong place, you may find that path is executed in many/most test cases, and you will pay dearly. You can guess I learned that the hard way. Be very proactive and comprehensive in your test cases.
The single most important thing for this course is time management. Do not fall behind because things pile up. Be very aggressive about starting the projects in particular. Get on them as soon as they are released or you may find yourself running out of time with the next project on top of you as well.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (5 / 5): ★★★★★
Difficulty (4.3 / 5):
Workload: 20 hours/week
Pros:
1. Subject matter is interesting, and the lectures are really good and very in depth.
2. The projects are significant problems and you will learn a lot from doing them and come out a better engineer at the end.
3.
Cons:
1. Fall 2021 project scopes were maximally large for a single semester. This would have been okay, but...
2. Fall 2021 project autograders were not ready ahead of time and were not tested before being opened to students. This left students wasting a lot of time trying to figure out if the problem was the grader or their own code.
3. Fall 2021 project specifications had some errors in them.
Detailed Review:
If the projects had been more fully prepared by the course staff, this course would have been one of my absolute favorites along with Parallel Systems and Natural Language Processing. I expect that future semesters will be smoother as a result of our suffering, so, if you're reading this, you're welcome.
The planned scope of the course projects was to implement a compiler for a single language with two target architectures. The concept was good, although the amount of work was very large (comparable to or even more than PS). But the project specifications were not proofread carefully enough, and the autograders weren't tested at all before being released. This meant that we had a project schedule that had no room for wasted time, but we were forced to waste a lot of time with back-and-forth on Piazza working out these issues. This caused a lot of unnecessary stress.
To the professor's credit, he did address the issues and ended up reducing the scope of the last projects allowing people to catch up.
I expect those issues to be mostly resolved in future semesters, so I would definitely recommend the course in the future. Building a compiler in this depth is a fantastic learning experience in engineering a large, complex piece of software. The lectures are great and deeply informative (to the point of being longer than any other courses's lectures, but worth it).
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (0.7 / 5):
Workload: 1 hours/week
Pros:
1. Professor actually active in the forum
2. Freshman year of undergrad easy
3. Good intro to R/tidyverse
Cons:
1. If you know ggplot, you probably aren't going to learn much
2. Some unclear directions
3. PCA for the 57384573498th time in this program
Detailed Review:
Not much to say beyond what I said above. Easy A.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (4.3 / 5):
Workload: 30 hours/week
Pros:
1. Interesting content and projects.
2. Lecture material presented very well.
3. Hands on.
Cons:
1. Insufficient TA resources.
2. Very high workload.
3. Quizzes can be a bit of a nuisance/do not always match the lecture material
Detailed Review:
Having read many of the reviews for this class, I just want to say that the complaints about Piazza are largely a user problem, not a course problem. All of the posts/questions are tagged, so it's relatively easy to only see posts about the specific thing (e.g., homework 2), that you currently care about. The word/phrase function also works well.
I found this course to be exceptionally well-taught. The professor presents the material really well, and always puts things in context with relatable and understandable examples. Moreover, because of the presentation, I found the concepts interesting and was excited to work on the homework assignments.
The quizzes were sometimes out of order (e.g., I would be mystified by a question only to find out that the topic was discussed in the *following* lecture).
This class is a lot of work, especially if programming is not your forte. But even so, a lot of the time is actually running your code, then having to tweak certain parameters and running it again until you get the results you want.
I also really liked the way TA sessions are done in this course: it's the TA with all the students together; even if I didn't ask any questions, I always learned quite a bit from other students' questions and the TAs answers.
The TAs themselves were very knowledgeable, helpful, and incredibly patient.
I also really appreciated the tips the TAs posted for each project.
However, my class had over 150 students, and there just weren't enough TAs to adequately help everyone, especially because students often needed code reviewed to figure out a bug/problem, which is a very time consuming activity and must be done on an individual basis because of the rules around not sharing code. The good news is that all the material for this course is publicly available, so one can start well ahead of time... if only I had known that.
Another thing around logistics was that the HW directions sometimes have errors, and this is pointed out deep in some random Piazza post and the source material not fixed. It would save a lot of time and energy (for both TAs and students) if these known issues were (a) fixed in the source material ASAP, and (b) these little errors were clearly called out somewhere on Piazza and/or EdX where students could easily see them.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (3.6 / 5):
Workload: 15 hours/week
Pros:
1. Great lectures - clear, engaging, and well structured
2. Projects are reasonably challenging but not impossible
3. Good TA support in Piazza and lots of office hours
Cons:
1. Difficult to learn from mistakes due to lack of grader feedback
2. Lots of unclear quiz questions
3.
Detailed Review:
My experience with this course is similar to most of the other reviewers. As someone without much formal programming background, I learned a lot and am a much better programmer for having completed it. Like most other reviewers, I found the second half significantly more challenging and time-consuming than the first.
A few thoughts:
-You need to learn to write your own test cases to do well in this course. You can get through project 1 and possibly project 2 with the provided cases alone, but that won't work as well for project 3 and beyond.
-As others have pointed out, you won't get meaningful feedback from the autograder in most cases, and the instructors will not provide specific feedback on your code in public posts. Go to office hours or make a private post if you want answers. I got good feedback when I explained my thought process so the instructors could help me understand where I went wrong.
-I thought the quizzes were the weakest part of this course. I understand that they're trying to make the questions ungoogleable, but I often found myself trying to guess the right interpretation. That being said, I was successful in getting a question regraded at one point, and Dr. Lin personally said he would clarify the wording for future semesters. The instructors *are* reasonable about giving feedback if you can clearly explain your reasoning, but it's a little frustrating that the questions are so unclear in the first place.
-I thought the main textbook (Weiss) was helpful in explaining concepts (I know many others disagree). My routine was generally to watch the lectures first and then read the textbook to review for quizzes. Yes, the textbook is in Java, but the concepts are the same. It's definitely not essential, but I think it's worthwhile if you're someone who learns well from reading.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 20 hours/week
Pros:
1. Learn PyTorch to a good level
2. Good practice with computer vision
3. Projects show there's more than just the model
Cons:
1. Final Project
2. Quizzes
3. Time-consuming
Detailed Review:
This is not a walk to the park course. I would recommend taking this course by itself if you have no previous exposure to the material. Overall the course was really fun, and the projects are suited towards computer vision tasks. With the exception being the final project. Some of the quizzes were vague and it sucked not seeing how to do some of the problems. HW1 & 2 are warmup homework in the sense it gets you set up for what is to come. HW3 and forward are harder with the 3rd being one of the hardest of the course. The final project is by the far the hardest assignment of the whole course. I would recommend doing the other assignments and building at minimum a 2-week buffer to start on the final project ASAP. I would not recommend doing it solo if this is your first exposure to these topics and libraries. I did the final project solo but have been using Python for 3+ years and have experience with TensorFlow and ML. I was able to get 2nd place in the tournament but it was very time-consuming and stressful, I would recommend getting a good group early as I know some had slackers. Overall, good course but a lot to chew on.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (1.4 / 5): ★☆☆☆☆
Difficulty (1.4 / 5):
Workload: 4.5 hours/week
Pros:
1. Really interesting subject matter and projects.
2. Easy to follow structure
3. Lectures made each project straightforward, since the lectures walked through an example codebase you could use for your project.
4. Easy grading
4. Not a huge workload imo.
5. AI use allowed.
Cons:
1. Lots of encouraged readings, but none that were necessary to read. I didn't read them after the first week.
2. Lectures were hard to follow.
3. Final project is a little long, but straightforward and interesting.
4. Have to make slides for each project.
Detailed Review:
I think this is a great first class in the masters to take. There are weekly readings and lectures. I found I didn't need to do the readings and only needed to watch the lectures which involved code. I wanted to watch the rest of the lectures, but unfortunately Professor Ding's lectures can be a little hard to follow and understand.
Every two weeks, a project is due, and Professor Ding usually has about 30-60 minutes of lectures going over a very similar codebase. You can just take her codebase and then adopt it to a subject you want. The projects were cool and most used public healthcare data. One week, you learned to use scipy and numpy to make graphs; then learn basic SQL; then steadily slightly more advanced ML stuff.
In each project, you had quite a bit of flexibility also. You basically had to analyze the healthcare data using certain methods that were described in the example codebase, and you could analyze whatever features you wanted. You had to make slides for each project which was a little tedious, but whatever. There were two weeks were there were peer review.
Then, there was a final project. You basically had to do any kinda advanced ML analysis, make slides, record yourself speaking them, and write a ~5 page report. Each step took time, but wasn't terribly difficult. And you could do it on whatever subject you wanted with whatever data you could find online (e.g. Kaggle), so it was ultimately pretty interesting. Writing the report was a pain.
But the plus is that AI use is allowed, so that made it easier, especially since Gemini is integrated into Google CoLab, which we use for the projects. Once I realized I didn't need to do the readings and only needed to watch the lectures related to the project, it took me about 2-3 hours each week to watch the lectures related to the project. And it took me 4 hours to do each of the projects due once every 2 weeks with the help of AI. So on average that's 4-5 hours per week of work. Not bad.
Piazza (ed in this case) was fine. Main issue was that the lectures were not great due to Prof Ding's delivery.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (2.1 / 5):
Workload: 8 hours/week
Pros:
1. Nice contents
2. Nice Staff
3. Good homework / final project
Cons:
1. The final project is not hard, but the rubric is strict; this should not be a con if you follow it carefully
2.
3.
Detailed Review:
I took this class alongside Parallel Systems because I have heard that PS would require a lot of time, so this elective class was a nice match.
Overall the class is good, and yes it is basic since it covers a shallow perspective of many case studies in deep learning and machine learning as well, and as I said (and many people said, even TAs and Staff) is that this class is meant to be the EASIEST one in the program and could be seen as a bonus/booster for ones trying to get their GPAs bette, so don't be hard or try to not expect a huge project of something like that.
The final project is easy, but try to start like 4-3 weeks before the delivery date and try to match the rubric as established.
On the other hand, the papers exposed could help you a lot in your professional career if you are in AI / ML jobs.
TAs and staff were very helpful and always ready to help. I was on the last semester of the main TA and was great to have him leading the support.