Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (3.6 / 5):
Workload: 10 hours/week
Pros:
1. Material was interesting and applicable
2. The lectures were clear
3. I learned a lot
Cons:
1. The homework was a nightmare
2. The quizzes were a nightmare
3. The tests were a... you guessed it... nightmare
Detailed Review:
You learn some cool things in this class. I am more confident in my ability to read and synthesize observational studies and random experiments. I think I could run one on my own. Grades aside, I promise you will learn a ton.
Grading could not have been any more frustrating than it was. Questions that are "choose all that apply" and have SEVEN OPTIONS. Multiple questions in a row where if you screw up the first then the subsequent are all wrong regardless if you did them right because its all computer graded so no partial credit. Exam questions that have choose the answer that is most correct styles with five options and the answers are all extremely similar.
A/B/C lines are based purely on distribution and quizzes are peer graded so students have an incentive to tank your quiz grade (and believe me, they will). TAs will help you with material but its not like other classes where they will guide you towards correct answers on HW in TA sessions.
You will get frustrated and annoyed at what turns out to be the answer choice. TAs will defend them to the death. You'll learn a lot, get a B, and move on with your life.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (1.4 / 5): ★☆☆☆☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (4.3 / 5):
Workload: 20 hours/week
Pros:
1. Material could be applicable for more math heavy concepts in CS
2. Lectures align with the textbook
3.
Cons:
1. LF/TA support this semester was horrible/nonexistent
2. Not everything is really explained
3. A lot of proofs end up being hand-wavy
Detailed Review:
There's nothing extremely wrong with the class in itself. It covers a lot of material and it does a good job explaining the basics. I will say I'm not particularly strong in proofs so I definitely struggled a bit in the beginning of the class.
This leads to the negatives of the summer semester. This class was not made for the summer and I would highly recommend you don't take it in a short semester like the summer. Homeworks and lectures are due the same week that midterms are due. Even though the class recommends that you have a strong background in proofs, I still think some of the proofs could have been explained way better. There were so many instances where the proof explanation was literally something like "algebra" or "these are equivalent" without anything else. Now this wouldn't be a huge problem if it wasn't for the fact that this program was made for students who are probably full-time and have probably been a while out of school. I understand that understanding proofs for this class is important, I'm more just asking for a few better explanation. The lectures are explained relatively well but I think theres a few shortcuts that are taken and a few concepts/proofs/questions that are never really answered so many students ended up being pretty confused.
Now for my biggest gripe. TA/LF support was more or less nonexistent. I tried going to office hours at least once a week and besides the head TA, I've never had any of the other TAs actually show up. I've never seen an edstem board so dead because I think most students realized that the TAs don't really answer your questions. The first few homeworks had relatively clear criteria but some of the graders don't really bother telling you why you got points taken off. As you go further in the course, the homework stop having clear criteria. I literally got points taken off because one of the homeworks was "implement a function" and I did it correctly but they didn't like the way I initialized an array so I got points taken off. Same as earlier in the semester, there's barely any explanation on why you get points taken off. The grading between the TAs are super inconsistent and its almost like playing roulette. It almost feels like if your answer doesn't exactly match the answer key, you get points taken off. As I said, there's not a ton inherently wrong with the course itself but the fact that it's offered in the summer when it's definitely not meant to be a summer class as well as the horrible TA support made the class pretty painful.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (2.1 / 5): ★★☆☆☆
Difficulty (2.1 / 5):
Workload: 5 hours/week
Pros:
1. easy to get a good grade if you have experience with any theoretical math courses
Cons:
1. no* implementation component
2. not a great format for learning and digesting the material
Detailed Review:
According to exam scores (between 90 and 100 on all 3), I did well, but overall I didn't feel like I learned much even though the subject was brand new to me. If the course had any programming component with auto grading I think that may have helped me personally, but instead it's just lectures and exams that don't really measure deep understanding. Basically if you fully understand the definitions, and can come up with simple proofs or counterexamples under time pressure you will do well. Similar to a 300 level math course. The homework assignments sometimes had randomly very difficult problems so I can see how re-doing those wouldn't help much with exams.
Peer grading (5 classmates per assignment) sucks. Rigor in the homework was not expected despite how challenging some of those problems were -- so it's both hard to grade and hard to learn anything from the provided solutions.
Lectures were a mixed bag. This is perhaps mean to say, but one professor clearly put effort into motivating the lesson and explaining things with more rigor - and the other's felt like a hodgepodge of dense content. Unfortunately the clear professor's lectures did not fully cover the material so for some topics, so you only have very poor and boring explanations to learn from in those cases - I watched most of those at 2x speed.
*This is partly a lie: some homeworks towards the end had an "implement this" subproblem. I used jupyter notebooks which weren't the neatest, but it was laughable what some people submitted (screenshots of code etc.)
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (1.4 / 5):
Workload: 4 hours/week
Pros:
1. Lectures are good
2.
3.
Cons:
1. Autograding is random and highly dependent on the grading environment
2.
3.
Detailed Review:
I've very good experience programming. I don't believe the ability to program is very critical to acing all the assignment (though it's of course necessary). They grade in an environment that's different from what students are working on which would potentially yield to a complete different results especially in terms of run time (run time of code is very critical in this course!). They don't really specify timeout in some assignment and rather they provide time complexity requirements such as O(log[n])! It felt like a joke in some cases how they are going about autograding.
The issue I raise above isn't about the impact on the grade itself. It actually curtails learning. Even after the grades are out, you don't know what you miss to learn from. There is no single method to solve the same problem. If the runtime is the only metric for example, one would design solution accordingly and will have a chance to see how the program logic (rather than run time) is doing!
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 12 hours/week
Pros:
1. Good introduction to Data Structures
2. Great lectures from Dr. Lin
Cons:
1. First iteration - issues with assignments that should be ironed out for future semesters
2. Assignments don't link well to the lectures
3. Teach yourself how to code in this course
Detailed Review:
While I enjoyed the lectures in this course, the assignments were often frustrating. There's a large element of DIY learning with the coding aspects of this course. If you are not Python-savvy, do some online coding courses to prepare.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (2.1 / 5): ★★☆☆☆
Difficulty (3.6 / 5):
Workload: 14 hours/week
This class has two professors. One teaches very well and organizes the material by motivating the topic and explaining each step of any proof he does. Unfortunately, the other leaves much to be desired in terms of presentation and ability to break down concepts.
In OLO, you learn the meat of this course (convergence rates for descent algorithms) without being frustrated by poor explanations and really awful slides. As a result, I actually understood the material much better in OLO compared to when I took Optimization.
- HW is fair and the problems were good.
- The textbook is really dense, but if you take your time with it, it can help.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (0.7 / 5):
Workload: 2 hours/week
Pros:
1. Low time commitment necessary
2. Availability of TAs
3.
Cons:
1. No depth of concepts explored
2.
3.
Detailed Review:
I don't think I'm going to state anything that others haven't for this course. Not self-paced as you have to wait on module releases throughout the semester. 6 quizzes that are super easy. A final project that is relatively open-ended and can be as ambitious as you want it to be. If you're not feeling ambitious, you can do a literature review and call it a day. If you've never seen ML, this is a great course to expose you to what's out there. If you have, pair this with a harder course, take this if you need a chill semester/GPA boost, or take this as a chance to tackle that project you've been eyeing.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (2.1 / 5): ★★☆☆☆
Difficulty (2.9 / 5):
Workload: 10 hours/week
Pros:
1. Workload is okey.
Cons:
1. Homework was lacking purpose.
2. Provided code is bad.
3. Lectures had a lot of typos.
Detailed Review:
Generally, I felt like the assignments were lacking purpose. Mostly, I learnt things that I'm unsure of how to apply. "Monkey see, monkey do". 50%-75% of homeworks are derivations and integrations to get the same equations presented in the lectures.
Homework didn't have interesting purposes nor datasets. Datasets were very obscure, only consisting of "y" and "x" (usually one x column), I found this very boring and hard to translate to real world applications.
The provided code is completely useless. All of the variables' names were non self explanatory. You had to guess what the variables were refering to as they all had obscure notations such as "x", "xx", "xxx", "xhh", "yhh". Long story short, you had to make your own code because the provided one was very hard to understand.
Lecture slides had a lot of typos, specially on equations (missing square term, missing variable, inconsistent notations, etc). A lot of things were not explained in lectures and where described as "straightforward" when they weren't trivial. Lectures were also missing "real world" examples and some lectures didn't even include an example.
This course needs a lot of improvement. I was expecting for an applicated class, with lot of real world examples or interesting free datasets available online.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (2.9 / 5):
Workload: 12 hours/week
Pros:
1. Statistical coverage was interesting and not difficult to grasp
2. Exam was open notes, open book
3.
Cons:
1. What application I can pull from this to future courses feels thin
2. Any application from this course to projects or future work is also thin
3. It's a math class.
Detailed Review:
I felt the first half focused on mathematical proofs with no application so it was difficult for me to try and piece together how I'd actually use the info later on. I've taken a graduate-level probability course before for my last master's and it was for engineers so much more application-based. I feel like this course would benefit if it were taught by someone with a different background. I ended up getting a good grade for the course but didn't leave feeling like I learned much- there was a lot of struggle to stay interested in the first half. I'm not a math proofs for the sake of proofs person. An application-based course would have been more useful. Sometimes I found myself solving a problem by following the steps but without much comprehension. I end up with the "right" answer but wouldn't have been able to explain it to anyone- which tells me I wasn't learning.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 15 hours/week
Pros:
1. Good intro to ML topics
2. Solid video lectures
3. TAs were very responsive on Piazza
Cons:
1. Some of the homework and exam questions were vague and did not reflect understanding of lecture content.
2. Literally Zero interaction with professors.
3. Very little practical learning.
Detailed Review:
I found the course stressful. Not because the subject matter was that hard, but because the tests had questions that were out of left field and not covered in lecture or notes, and at times it was incredibly difficult to understand what was being asked on the homeworks.
I did learn a lot, but not as much as I could have if the class was structured differently. This class assumes you are solid in linear algebra, prob and stats, and multivariate calculus. Not just familiar with the concepts, but you need to be able to perform in these subjects on the homeworks and in exams without hand holding.