Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (3.6 / 5):
Workload: 10 hours/week
Pros:
1. Notes & videos that are provided are very informative and well written.
2. Weekly assignments are challenging, but reasonable.
3. Take home exams.
Cons:
1. The course is very theory based and the applications of the algorithms were not clear.
2. Limited feedback on homework and exams.
3. Difficult to remember the purpose of each of the algorithms that were presented.
Detailed Review:
Overall, a good a reasonably demanding course. I felt challenged but not overwhelmed. Usually, I was able to spend ~10 hours per week on this course and take the weekends off.
Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 5 hours/week
Pros:
1. Easy to learn all materials
2. Project takes lots of time, but you can get good experiences in training model, and make what you have learn in modeling
3. It takes me more than 15 hours to do all HW and finish all video.
Cons:
1. In some weeks, it takes lots of lots of time to listening all course video
2. First two projects are simple, then change to very difficult in project 3 suddently
3.
Detailed Review:
Overall, I feel this course is pretty good to start in the first semester. This is the first semester in the program, and I take DL and ALA while doing a full time PhD research, so I work almost every weekends and Monday to do all HW.
Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (0.7 / 5): ★☆☆☆☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 14 hours/week
Pros:
1. extremely detailed course material from the previous (now retired) professors.
2. while slow, the grading felt fair and thorough, and the exams had very few "surprises" -- everything we were evaluated on felt like a true extension of the textbook
3. eventually, I felt that everything in the course came to a nice crescendo in understanding how many matrix-based math is done under the hood of algorithms
Cons:
1. course moves very fast early on, and sometimes leaves you wondering why you are learning certain topics the way you are
2. unclear if this will be consistent in future semesters, but the course staff severely underestimated (and misunderstood) the nature of the course. they intended to grade us with the rigor of a PhD qual evaluation, before ultimately settling on "full points if you tried to solve" the final assignments because they fell so far behind in grading
3. extremely disorganized in submission, grading, communication even amongst the staff
Detailed Review:
On the course material - their notation style, while unique, helped me to translate things into vectorized approaches in matlab from the lecture notes very easily, and the course book was pretty thorough in explaining proofs (not a lot of "left an as exercise to the reader" in explicitly answered questions)
As said in the cons, this might change in the future, but expect to be a little bit on your own in this course. The course staff was unresponsive for weeks at times, and most of the time any response given was by a single TA. The staff was overwhelmed with the volume of grading that needed to be done, and we don't even know our grades on the second midterm as the class comes to an end, let alone the final. The professor would rarely post, and often contradicted other instructions when doing so. It felt a bit like a class that was an afterthought for the staff (except for the one vocal TA that truly was so helpful).
I ultimately feel like I did well in this class, and certainly learned a lot, but mostly from self-study of a thorough textbook resource and not so much from the course instructors.
Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (2.1 / 5):
Workload: 10 hours/week
Pros:
1. Exercises are fun and do not take a lot of time to implement, it does not require a lot of setup
2. Algorithms and concepts are explained simply, you get how they work
3. Workload is acceptable
Cons:
1. Lectures are packed in long videos. Would be better to have several 7-10 mins sections than a 40-minutes block
2. Exams are insane. They ask very detailed questions about specifics of the algorithms/reasoning behind.
3. Exercises could go deeper. All follow the same patter and leave small to no room for explore
Detailed Review:
I liked this class. The workload is light although the topics are very interesting. Exercises are fun to do and require little to not setup and it is easy to see them work. Main concepts are easy to understand but there is a lot of details that are complex and hard to learn in just one semester.
The class, as you may note, is divided in two sections. I liked both although I had problems with the second one. Something in the teacher's way of explaining things made difficult for me to grasp some of the details. It might just be me, but I feel that the prof. went several times through the same concept over and over in most of the lectures and didn't explain clearly some of the important ones.
Exams are plain complicated. You are asked a lot of complex details about the algorithms studied and you are put in scenarios were you need to figure out if the algorithm in question would perform good or bad (or even better or worst than others). Put attention to the technical details in the lectures because they will be useful during exams.
The recommended textbooks are quite good, it is worth reviewing them after lectures to have a better grasp of the details. As I mentioned before, the lectures should be divided in small sections so it is easier to go through them. The notes are helpful but I have to admit that both profs. have a complicated calligraph.
Both teachers are quite good. I recommend this class. TAs support was very good as well, special mention to Alex Stoken who was very responsive, patient and helpful when answering doubts through Piazza.
Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (2.9 / 5):
Workload: 12 hours/week
Pros:
1. No exams.
2. Time commitment was consistent throughout the semester
3. Interesting geospatial section
Cons:
1. Classes and assignments are released on an awkward schedule so you can't plan ahead well
2. Second half is definitely worse than the first.
3. Expectations on homework was unclear at times
Detailed Review:
This course had some ups and downs. The material in the first half was easy enough to follow along. It's taught out of the math department and like most of those- you leave the class with a bunch of theory and not a lot of strategy of how you would apply what you learned to real-life situations. Why would you select some of the algorithms? No idea. I can tell you what the algorithm does but not why you would apply it. It would be good to review some linear algebra ahead of this course- specifically eigenvalues and eigenvectors. Most of the math is done in R or Python but there is one assignment that has some calculations by hand you have to scan in. The Data Viz class gives you enough of an R foundation to feel comfortable here- so much so that I'd consider it a pre-req. There was one library we had to use called likifit that had some of the worst documentation I've ever seen and seemed to only be used by the package authors so there was very little available to learn from.
The first half of the course is well taught and you feel like you have a good start with the code shown in lecture to figure out the homework problems. By the second half, there is little to no review of the python required to manipulate the matrices- just the math formulas and even those are difficult to follow the what/Why behind them. The lectures had to be watched a couple of times and it was hard to find supplementary material on some of the topics outside of published papers- which is concerning as that means it's not used outside of academia. That translates (at least to me) as likely not useful for application to real-world datasets. You are expected to know Python fairly well, especially with regard to matrix manipulation, but there are no restrictions as to what packages you use so if you are comfortable with numpy- you will probably be ok. Students were good on Piazza about sharing youtube videos or other resources that better explained certain topics. The TA's seemed overtaxed and were completely absent from Piazza for days at a time with questions about clarifying homework questions left unanswered. There were office hour sessions but they were sometimes cancelled with no notice and it was difficult to know if they would be there at the time they said.
The course material is released on an awkward schedule so sometimes lectures will release at the beginning of the week and sometimes at the end- with homework due a week after the lecture release. It made it difficult to plan ahead if you had a set schedule of when you had time to work on the course. The grading is done half by peers and half by the TA's. The grading for peers is on a 4 point scale (usually) which was generally insufficient. Some peers would mark off an answer with a whole point (equaling 25% of a grade) for missing something small or being off by a tenth of a point. The questions would ask you to discuss certain points and for this you generally need a crystal ball. They will be looking for something really specific but the question is something like "discuss the differences in the two matrices" or something, No matter how in-depth your response is you will get a point deduction because you didn't mention "density" or something. They do not release any solutions for the staff-graded problems and the solution keys released for the peer graded ones contain no code- so there's no way to see what an optimal solution would look like. you have to grade 5 peers for each assignment and they are not always trivial to grade so you should expect that to take some time- especially if you want to give any feedback at all. The practice problems are an annoyance. They are required to do but you get exactly one shot at answering them correctly. For some, you may have to answer all 5 parts before hitting submit and if you got the first part wrong, it cascades down and tanks the weekly grade. I wish they allowed for multiple attempts- it is practice after all. The latter part of the course had practice problems that required non-trivial code to be written to answer the questions. Sometimes this would help you jumpstart the homework but other times it was a lot of work for just a couple of points. For the second half of the course, you will definitely learn the material through the homework assignments and not so much through the lectures.
On grading- there was a very generous curve applied. I think you could miss one peer grading without penalty, they dropped the lowest 2 weekly question scores as well as the lowest peer grade and the lowest staff-graded homework. Bonus points were based on the peer reviews you made but mostly based on piazza contributions so make sure your name shows up in replies or questions several times in the semester to make sure you don't miss out on that grade bump.
Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (3.6 / 5):
Workload: 21 hours/week
Pros:
1. Most topics are investigated through example problems to understand how the algorithms are derived.
2. Programming assignments starting near the midway point and beyond are interesting.
3. Consistent approach to problem definition and steps to solve the problems.
Cons:
1. 21 hrs/week on average.
2. TA sessions were mostly pointing us to the right areas to re-read in the textbook.
3. No feedback given for homework if you get a good score.
Detailed Review:
I read someone else's review before taking this course which said it was "straightforward" just as climbing a mountain is "straightforward" but still difficult. I found that was also the case for this course. It required a lot of time to slowly work through every problem, checking the provided solutions, reworking the problem, etc. until I felt comfortable with the solution and the meaning of that solution. I'm 100% sure this is the intended way to go through the course based on what the professors and TAs told us.
I tracked every hour and the total averaged to 21 hours/week to go through all the textbook problems and the exams. I spent little time on the enrichment papers and problems due to lack of time. I think it's possible to spend less time if you are skipping problems and going to the second half of every chapter, but you may misunderstand the topic and results. I recommend scheduling out 15-20 hours every week for the entire course and following every problem. That was successful for me.
This class would have been impossibly difficult if the online text and videos were not so well prepared. Searching online for additional resources is not that fruitful if you're working on a specific algorithm implementation of a specific factorization or descent method.
The beginning programming assignments are a bit too easy but the programming later starting midway through and beyond are actually nice challenges and I found that solving them was a learning experience.
Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (5 / 5):
Workload: 25 hours/week
Pros:
1. Practical
2. Learn a lot
3. Excellent Prof/TA Support
Cons:
1. Time-consuming
2. Difficult material
3.
Detailed Review:
I'll add my voice to the other reviews - this is an excellent course. You learn a ton in a short amount of time. The lectures are great, and the professors and TAs are all extremely helpful. They were responsive, understanding when things came up, and clearly devoted to student success. However, it is insanely difficult and time-consuming material. I cannot fathom taking this with another course on top of a full-time job. This class is a part-time job. If you aren't well-versed in C++, the already-difficult projects become a lot harder; half my mistakes were C-related and not parallelism-related. They spaced out the difficulty (e.g. projects 1,3,5 were easier than 2,4) and I agree with their assessments, but even the easy ones were pretty hard. No final exam, which was great.
Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 14 hours/week
Pros:
1. Lectures were quite good - the interaction dynamic in the videos made it easy to watch and focus
2. Assignments ramp up throughout the semester, starting with simple to increasingly more complex
3. Good overview of basic data structures
Cons:
1. If you have any undergraduate experience in data structures this class will feel redundant
2. If you are new to programming, or new to object oriented programming the assignments may be a struggle
3. Direct connections to data science were lacking
NOTE: The professor has already announced they are aware of the difficulty some students with no programming experience faced, and are re-working portions of the course so this review may not be reflective of future renditions of the course.
Personal background: not a CS major, but minor experience in coding through out the years for personal projects. I did not find the assignments "hard" from a logical standpoint, but my lack of coding experience meant some of them took a good amount of time.
Quizzes were not the best quality, but fair from a grading standpoint (all questions pulled from question banks).
All assignments were in python. When it became obvious that some students were struggling more than others, the professor started allowing groups for future projects. The last project had to be completed independently.
Overall, good class but I'd say for most people the workload is high. The teaching staff was responsive though and did their best at managing the diverse background of the students and tried to adapt where possible.
Textbooks were handy for reference, but not required (all available online though).
Only docking a point on lectures due to no notes available.
Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 12 hours/week
Pros:
1. Extremely relevant
2. Lectures are still solid as with DL
3. Tightly written assignments
Cons:
1. Not so much a con but: get the Colab Pro license either for free as a student or just drop the $10 (I did)
2. No final project like DL has (or at least used to have)
3.
Detailed Review:
I took this as my summer course. I was considering doing a thesis (and stealth starting in the summer), but this material is just too relevant to not take the class.
The material is extremely relevant and tightly taught. Excellent lectures and topics.
My only gripe is the loss of the final project. I have found those very valuable for the courses that have them.
Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (5 / 5):
Workload: 24 hours/week
Pros:
1. You will learn
2. Neural networks are your friend
3. Excellent project to add to your portfolio
Cons:
1. A bit dated just because the subject moves so fast.
2. Very intense. Difficulty ramps at HW2/3
3. Summer is very short to fit very much
Detailed Review:
DL is an intense course, particularly so if you place it in the summer semester. So much gets packed so tight. People complained about the final project, but as the writeup takes the lions share of the points, I am less incline to bash on it. The subject matter moves forward quickly, so things can become dated in a very short period, but the final project is only limited by you and your group. (The workload I list is for the summer squeeze.)