Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (2.1 / 5): ★★☆☆☆
Lecture Rating (2.1 / 5): ★★☆☆☆
Difficulty (4.6 / 5):
Workload: 30 hours/week
Pros:
1. The lectures do give a good understanding of the topics covered.
2. The textbook is probably your best friend if you truly want to understand the concepts.
3. The TAs were (mostly) responsive (kind of abrupt in replies though), and Ed was mostly active and helpful due to the students helping each other out.
Cons:
1. There is absolutely no relation between the lecture videos and the assignments. Lectures cover xv86 and assignments are on pintos.
2. Expect a requirement document (which is sometimes pretty vague with the requirements); we get no clarification on the assignments unless we ask a specific question on Ed.
3. Way too much effort went into the assignments. I felt the workload was skewed heavily towards completing the assignments and then watching the videos whenever I had some time.
Detailed Review:
It is a good course if you want to learn about OS concepts, though honestly, the textbook (which is a free e-book) itself is the best source of information. The lectures are good, but they are way out of line with the assignments. 5 assignments over a semester honestly don't sound too bad, but wait till you actually start coding for them. The complexity grows with every assignment, and you are more squeezed to finish work on time.
You do get 5 grace days, which you can use as a group. But I honestly advice not to rely on them and just start your work early, because you will need all the time you can dedicate.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (0.7 / 5): ★☆☆☆☆
Lecture Rating (0.7 / 5): ★☆☆☆☆
Difficulty (3.6 / 5):
Workload: 20 hours/week
Pros:
1. Course is oriented towards programming.
2. Engaging topics on operating systems.
3.
Cons:
1. The class relies heavily on group projects, yet many participants lack sufficient C programming experience, making it challenging to contribute effectively to some of the more demanding projects.
2. Both teaching assistants and the professor were unhelpful.
3. The project schedule was poorly planned given their complexity.
Detailed Review:
The structure of this course is fundamentally flawed. While the subject of operating systems is fascinating and crucial for computer scientists, this course fails to facilitate effective learning.
Firstly, the lectures were entirely pointless, outdated, and provided no aid in understanding the projects. I ceased watching after the first lecture due to their irrelevance and the professor's poor presentation skills.
Secondly, every project had to be completed in a group, yet most students did not possess the necessary C programming skills to manage them effectively. The Pintos projects could be completed in a week if all three members equally contributed. In reality, if you care about getting a good grade, you will end up doing all the work. I had to change group members multiple times because one would drop the course and completely ghost us until the deadline. My group members often gave me false hope about their progress, only to reveal at the last minute that they had only written a few lines of non-functional code. Consequently, I had to take holidays from work to complete all the projects myself. I also had a group member who tried to give me a psychological lecture on forgiving another student for failing to write a single line of working code for several projects, instead of properly addressing the issue with the TAs. Ultimately, I had to complete an entire project by myself. Why would someone enroll in a coding class without coding skills? Why claim to have a good level of coding skills when forming a group, only to leech off others? Additionally, when we raised some of these issues with the TAs, their solution was to split our group into two, letting the slacker be graded on the complete project that we implemented instead of his failed attempt. This is not proper conflict resolution.
Lastly, the teaching assistants and professor were extremely unhelpful. Their inability to provide meaningful support made external resources like YouTube a better option for understanding how to complete projects.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (4.3 / 5):
Workload: 20 hours/week
Pros:
1. Helpful TA's if you ask the right questions and ask for help
2. Gives an overview of ML areas really quickly
3. 2nd half of the class feels more manageable and concrete
Cons:
1. Very open ended and abstract with little guidance
2. Frustrating assignments with lots of time spent figuring out what is being asked
3. If you have a brilliant class then you'll need to keep up with the curve
Detailed Review:
I am fairly disappointed with this course, probably skewed by taking it over summer. I felt like dropping it after the first two homeworks. The assignments seemed disconnected from lecture and very abstract and there is little guidance to help figure out the concepts. I am definitely coming from more of a CS newbie perspective with no ML training, but I did hear the sentiments echoed that many folks spent more time googling and learning how the material worked from the web than from lectures. In a way, it did help me force myself to learn due to the amount of online research I did because it is a sink or swim environment where you have to learn and research a lot of stuff in order to grasp the assignment material. My review is also a little skewed because taking this over the summer makes it a very aggressive schedule where you have to watch all the abstract lecture material and complete both a confusing theory assignment plus a coding assignment each week. If you are not a seasoned ML practitioner and you are starting off the program with ML, I would recommend taking it Fall or Spring in order to give yourself more time to get caught up and ask questions.
I agree with previous comments about Prof Liu being a bit easier to follow and the concepts and math are better documented in his textbook.
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.