Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 15 hours/week
Pros:
1. Good progression of difficulty throughout semester.
2. Assignments are well thought out and focus learning
3.
Cons:
1. Android APIs can be frustrating to learn.
2. Takes time to get comfortable with the material.
3.
Detailed Review:
Overall I really liked this course. It is more practical training for a software engineer than any other class I've taken in the program. The assignments were well thought out, and give you enough to start so that you can focus on learning the concepts at hand. Complexity is added as weeks go by and some of the training wheels are taken away.
The time investment will vary greatly depending on your experience. If you are not comfortable with app development it could easily consume 20hrs some weeks.
Of the 8 classes I've taken so far, this is probably my 2nd or 3rd favorite.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (0.7 / 5):
Workload: 8 hours/week
Pros:
1. Lecture and slides very well put together
2. Lots of worksheets and code examples
3. Instructor and TAs very responsive and helpful
4. You will learn R
Cons:
1. Too easy
2. Piazza is impossible to keep up with
3. 100% peer reviewed
Detailed Review:
The class was enjoyable with clear, well organized, interesting lectures and assignments. Lots of easy to follow code examples. You will learn usable R. The instructor and TAs were very active on Piazza and quick to respond to questions.
I have a strong programming and analysis background and I found the course to be very easy. It didn't feel like masters level work. There is a Piazza participation component to the final grade. There were way too many people in the class to be able to keep up with Piazza and I quickly quit trying to do so. The class is 100% peer review grading (which I dislike).
I did purchase Dr. Wilke's book "Fundamentals of Data Visualizations". I like the book and frequently referred to the directory of visualizations in chapter 5 when working projects, but it is definitely not necessary to succeed in the class (and available for free online).
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.1 / 5):
Workload: 8 hours/week
Pros:
1. Solid and clear lectures
2. HWs don't take too much time (~4-5 hours)
3. Weekly office hours held by the Prof. is very helpful
Cons:
1. The MCQ format of the exams can get frustrating especially with no partial grade when you have to answer select all that apply type of questions
2. Few typos in some lectures
3. Boyd book is not very helpful towards the second half of the course
Detailed Review:
I was quite apprehensive when I took the course as it had several negative reviews but look like the Prof. has really put in some effort to make it better. The HWs weightage towards final grade is increased to 45% and the several problems in the HWs were made optional so that HWs on an average takes only about 4-5 hours if you get a good grasp of the lectures. The Prof's weekly office hours is quite helpful to get answers on some gray areas if any in the HWs or lectures - try to utilize it to the max potential. I never attended any TA sessions so cannot comment how useful were those. There are 2 midterms and 1 final and all of them are MCQ format so if you happen to get anything wrong there is no partial credit. The grades are curved so definitely a good possibility to get an A if you get >95% in the HWs and clear the exams with decent grades.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (1.4 / 5): ★☆☆☆☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (1.4 / 5):
Workload: 5 hours/week
Pros:
1. Programming assignments are fine
2. First half of lectures are easy to follow
3.
Cons:
1. Second half of the course is an information dump
2. Quiz questions can be ambiguous for the sake of it
3.
Detailed Review:
This is an overall easy course to pair with a harder or more labor-intensive course. Interesting concepts that I'm assuming you'd have seen in some undergrad classes (non-CS undergrad yay), but it's a nice soft introduction to some of the algorithms if you have not seen them before like me.
The class has 4 programming assignments (50% + some extra credit) and 5 quizzes (50%). Everything is autograded, so by the end of the semester you'll know your grade early on.
The programming assignments are generally easy - both in implementation and quality. I will only complain about the final assignment as there were some ambiguities that needed to get ironed out. If you've seen python before, the assignments are doable. The second half of the course, however, is left untouched by the assignments. It's a shame too, since those concepts would have been nice to implement.
The quizzes are generally good as well. Closed-note, but no proctoring as of this review. If you pay attention to the lectures, the quizzes are doable. I do want to put a disclaimer here to not underestimate them like I did from previous reviews lol. Luckily, the two highest scores out of the first three quizzes are kept. By the time the last two quizzes come around, you'll have a good idea of what the questions might look like, so there's that.
Ed support is probably some of the best I've seen in the program so far. TAs are engaged and generally replied to all questions.
Overall, good course to pair up with something with heavier workload or if you're needing a more chill semester.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (5 / 5):
Workload: 20 hours/week
Pros:
1. Learn a lot about the subject matter
2. Improved my coding skills
3. Huge grading curve
Cons:
1. Difficult environment set up that wasted a lot of time
2. Office hours are overcrowded
3.
Detailed Review:
We know at this point that the prerequisite of "1 semester of coding" was far off from reality, more like a couple of years. I would add that coding experience is also not as helpful unless it is OOP. There were some difficult concepts for me to grasp that probably were much simpler to students with a CS background. The course was very challenging and assignments took way longer to complete than what was advertised. Even those that were already very skilled programmers seemed to take longer than expected. I learned a lot from this course, but mostly from the independent study required to complete the assignments. I considered dropping this course after the projects quickly ramped up in difficulty after the first couple but pulled through.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (4.3 / 5):
Workload: 16 hours/week
Pros:
1. Great lectures.
2. Good content.
3. Presumably generous curve, and opportunity for "Karma points" which presumably can bump your grade a bit to the next letter if you're borderline.
Cons:
1. Assignments are way more complicated than examples in the lectures. Presumably there's a generous curve, but a score of ~86% with TONS of Karma work still yielded a B+ (pretty much as if little to no curve had been applied). Maybe their curving scheme benefits lower scores more disproportionately; not sure as the strategy was not disclosed.
2. The "hidden tests" are largely useless because you have no feedback as to what the tests are testing for and why they might be failing; even if you perform dozens or even hundreds of other tests to ensure your data structures are correct and your algorithms are efficient, you can still miss points because of some arbitrary "hidden test" they chose to base the grade on. This is not very conducive to learning, compared to letting you know what test is failing, and leave it to you to figure out why and how to fix it.
3. It's terrible that quizzes have a hard deadline and can't be retaken or taken late; some people travel actively for work and internet connections are not always reliable.
Detailed Review: Pretty good course; better than Probability & Inference (the only other one I've taken), but definitely more challenging.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (4.3 / 5):
Workload: 20 hours/week
Pros:
1. Class is heavy on the programming.
2.
3.
Cons:
1. None of the assignments (excluding the final) allow you to start from literal scratch to understand the entire deep learning workflow.
2. Final Project requires more than the allotted time given.
3. The quizzes are annoying since there are so many of them.
Detailed Review:
I really enjoyed this class because you actually get hands on experience with deep learning and you really have to understand what is going on to be able to get everything working. If I can give any advice it would be to start as soon as possible on all assignments because the time allotted for the final project is only a couple of weeks (I think it was 2-3 weeks) which, if you have no prior experience with deep learning outside of this class, is not enough time. I finished all my homeworks early so I had more time to work on it which really saved me in the end. In the end, this class alongside Data Structures and Algorithms have been the 2 most helpful classes in my career so far.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (2.1 / 5): ★★☆☆☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (4.3 / 5):
Workload: 12 hours/week
Pros:
1. You need to learn DS and Algos - this will set you up
2. If you're rusty with OOP/Python concepts you'll get better
3. You'll get solid support from course mates and some TAs
Cons:
1. Schizophrenic Professor and grading
2. You'll never figure out, why your test cases failed
3. No support from most TAs (except Ha)
Detailed Review:
Let us face it - If you interview anywhere for a ML/Technical DS role chances are you'll have a coding round that involves knowing Big O analysis. If you haven't done that before then prep before you come to this class and try and get the most of it.
Unless you've a (recent) degree in CS you'll likely want to spend a lot of time in concept land before you take a course like this one - you'll need decent OOPs skills and Python coding abilities to attempt this course; don't lull your way into it. On the other side, this course skips a lot of Sorting and covers some Searching (not exhaustive); BFS/DFS/Djikstra etc. are covered and decent intro; you'll need a lot more Dynamic Programming than here.
Prof Lin’s lectures are useful, though there's a ton more resources on YouTube that are better. Read up all of them in your spare time. The lectures are pre-taped in a Socratic method type format and are okay. More about his idiosyncrasies further down
The quizzes are kind of crazy and you'll need to watch the lectures to attempt the quizzes to do well. Now comes the heartburn - the assignments. In Kaggle style you'll get some known test cases but you'll mostly be evaluated on unseen test cases. They won’t tell you *why you failed* some test cases even after they score them. So mostly you don't know what the heck you did wrong. The Prof. and the TAs claim this will help you "learn". I beg to differ - if one doesn't know why they erred, what exactly have they learned? They've learned they got a zero on some test somewhere. Pedagogical outcomes should be tied to actual learning of students, not in administering clever test cases and leaving people confused and frustrated.
The biggest con – I will go out on a limb and call this out – Prof Lin wrote 2 posts in the entire semester – One in the beginning welcoming people and telling us not to whine. One in the end, where it sounded to the rest of the crowd that he had caught someone cheating. And it seemed like he waited the entire semester to relish his catch. Otherwise, he was MIA with zero participation. It is quite obvious he does not care for you or your outcome. It almost feels like he’s solving some personal issue he’s had with someone cheating in the past or gotten a leg up at his expense etc.
Did I learn anything? Sure. I also learned that I can a lot more on my own and with my course mates. I did get better at coding and algos.
Is Prof Lin's class good for you and useful? Absolutely.
Is he pathologically nuts? Yes. People in authority like him, should contemplate deeply about psychological safety.
Is the way he grades (degrades?!) bizarre? Yep.
Are the TAs generally helpful? Yes. But don't expect much - some of them are astoundingly unhelpful. Ha Thai is the best – he appears to be a human being who cares.
Are the course mates helpful? Absolutely. This is the only forum where you'll get any help - Get on a Discord server for the class and focus on learning from each other. And yes, Leetcode on the side, to get ahead.
Do you need DSA? If you want to succeed in technical interviews then you better get good at this topic. Either with or without this class.
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. Programming heavy and very application focus
2. Lectures are fun and often times not boring
3. TAs are very helpful on Piazza
Cons:
1. VERY heavy workload if you have not done Java and Android development
2. Weekly homework and assignments, making it very very rushing
3. Hard to complete the assignments if you do not have enough time to understand the concepts
Detailed Review:
I strongly advise to only take this one course for the semester if you have not done Java or Android before. Every week there will be one or two deadlines to complete.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (3.2 / 5):
Workload: 9.5 hours/week
Pros:
1. Very useful material: covers many relevant spatial, temporal, and matrix applications
2. Assignments were fairly useful and consistent with the weekly topics
3. Workload was manageable in the summer listing, especially compared to past iterations
Cons:
1. Second professor has fairly poor lectures
2.
3.
Detailed Review:
This was course 7 out of 10 for me in the program and I have to say that I quite enjoyed it.
The first portion is R based with geospatial and time-based analysis. The topics explained were very relevant, although they were taught at such a rapid pace that it was hard to do a deep dive into the concepts before the next big group of models was introduced. I feel like this could have been a whole course in itself, but it makes sense why everything in the course was taught together.
The second portion is Python based with matrix-based models. While I feel that this portion was even more helpful/relevant for general data science, the lectures were not taught particularly well.
Overall this course was quite good and enjoyable. The evaluations were very fair and the workload for the summer was very manageable. This was one of the better organized and designed courses in the program.