Overall Rating (1.4 / 5): ★☆☆☆☆
Professor Rating (1.4 / 5): ★☆☆☆☆
Lecture Rating (1.4 / 5): ★☆☆☆☆
Difficulty (5 / 5):
Workload: 25 hours/week
Pros:
1. Pretty good TA support
2. Could *maybe* make you a better programmer
3. Increased my pain tolerance for future courses in the program
Cons:
1. Massive workload, both in amount of lecture content and problem sets
2. Teaching style is very hard to follow, overly theoretical
3. Extremely difficult exams
Detailed Review:
This class was more painful than I could imagine. This is my sixth course in the program, and typically the arc of a course for me is the first few weeks are pretty tough, but then things start to click and the remainder of the course feels manageable and generally enjoy it. That never happened here. Things didn't really click, and what resulted was 12 weeks of suffering.
There are a few problems with this course. First, there is more lecture material than any other course I've taken. I'd say on average there's 3 hours of very, very dense material to watch. The material is *highly* theoretical, so think many proofs, lemmas, etc. This is a theory class, so know before you start that there is 0 coding and a pretty high expectation for mathematical maturity. This is fine though, it's okay to teach a highly theoretical class (though I imagine the average student in this program is more interested in practical classes). The problem is that each week you'll jump to an entirely new topic, so you never really have time to truly understand the material deeply. What resulted was surface level knowledge of an array of seemingly related topics. I'd also argue that the content was ordered all wrong - for example they introduce basic graph algorithms after more advanced graph topics, which made no sense to me.
The problem sets, 6 in total, take a very long time to complete and expect a deep level of understanding of the material. Because of my general lack of understanding, it would take me hours to just figure out what the problem was asking. This is the only course where I had to watch pretty much every recorded office hour session where they gave "hints" or "clarifications" (which were usually indecipherable, cryptic suggestions for how the answer key wants to you solve a problem) for the problem sets. Each problem set would take me probably 20 hours or so, and I never felt confident in the answers I gave. That said, it didn't really matter, because many peer graders would just give me high marks because they either didn't want to spend the time properly grading or because they felt bad that we all were suffering so much. By problem set 4 or so I found that there wasn't a direct relationship between time spent and my grade, so I relaxed a bit on the last two. The answer keys for the problem sets were immense walls of text - each time I was like how could anyone get this right?
The exams were insanely hard as well. You have 3 hours to complete way more problems than was possible. Luckily the grading was pretty lenient, so even though I left large chunks of the first exam blank I still managed to beat the median.
In short, this class was rough - rougher than any other course I've taken by orders of magnitude. I wanted to drop many times for the sake of my mental health and just enjoying life, but I always concluded that I'd come too far and I knew that as long as I completed the assignments with something passable then I'd get a decent grade. Do I think I'm a better programmer having taken this? Probably not. But the silver lining is that I know now that the last 4 courses I take will feel like a cakewalk by comparison.
Overall Rating (1.4 / 5): ★☆☆☆☆
Professor Rating (1.4 / 5): ★☆☆☆☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (5 / 5):
Workload: 20 hours/week
Cons:
1. Midterm 1 and Final Exam are incredibly difficult
2. There are no given test cases and autograder for programming assignment
3. Some of the theory homework have ambiguous instructions
Detailed Review:
There are no given test cases and autograder for programming assignment, other courses always provide test cases and autograder which we can use to test our implementation. There are some theory homeworks that have ambiguous instructions that can lead you to give a wrong answer although it is not your fault, no matter how valid your argument, the TA won't change it. The close note midterm 1 is very far from the practice and what you've learned. Final exam contains programming and theory, but likewise, they don't give you test cases or autograder, and the theory have some ambiguous instructions.
Overall Rating (1.4 / 5): ★☆☆☆☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (2.1 / 5): ★★☆☆☆
Difficulty (5 / 5):
Workload: 20 hours/week
Pros:
1. TAs made the class bearable
2. Great way to learn Latex
3.
Cons:
1. The class progresses at a break-neck speed
2. Topics in the first half feel disconnected
3. Lectures and slides are difficult to follow
Detailed Review:
First half:
- It is apparent from the beginning of this class that it is not for the faint of heart and that it will be a massive time commitment.
- The lecture notes for the first half of the class are dense PowerPoint slides that the professor scribbles examples on during lectures. You should be prepared to scribble on the provided slides as well.
- The homework’s often feel very disconnected from the lecture material and do not serve as a good tool for learning the content. Rather, they are cumbersome, stress-inducing grinds that don’t reinforce the concepts at all. The homeworks differ from the lectures so much that they provide 6 questions and only ask you to do 4. There are also dedicated hint sessions for each problem to put you in the right track. Good luck completing the assignments without the hint sessions. Overall the assignments feel needlessly difficult and didn’t help the material stick at all (for me at least).
- The instruction quality is average, but fails to provide examples and rarely explains how topics are connected to one another and rarely makes any connection about practical application of the material (I know it’s a theory course, but surely the content is used in practice somewhere right?!)
Second half:
- the second half of the course was markedly better than the first in my opinion.
- the homework questions were much more relevant to the lectures. There was generally one question per lecture, and there were no hint sessions. The lack of hint sessions was a good thing, to be clear. The homework problems were much more manageable and often had multiple parts that built off of each other. They were great for actually learning the material.
- the lecture notes were PowerPoint slides again, and the professor for the second half also scribbled all over them. It would have been great if clean figures had been included in the slides instead of the scribbles.
- the instruction quality was above average in the second part of the course. The relationship between topics was often more clear, and real world examples were evident in the material.
Overall, very difficult course that was a constant source of stress and frustration instead of enjoyable learning.
I would not recommend it to a friend, nor would I wish it upon my worst enemy.
Overall Rating (1.4 / 5): ★☆☆☆☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (4.3 / 5):
Workload: 20 hours/week
This course will challenge you, and the material is theoretically interesting, but it is not well-run.
Professors Rossbach and Lin were engaging lecturers in the prerecorded videos, but were almost entirely absent from the course itself. In addition, the lecture content felt very scattered, and the second half of the lectures were only occasionally useful for doing the assignments. I can count on one hand the number of times the professors answered questions about the assignments on Piazza.
This meant that the course was almost entirely in the hands of the TAs. The main person responsible for answering Piazza questions was Henrique, with some contributions from Grant and Aditya. Abayomi never posted on Piazza except when students complained that they couldn't access his office hours. Regardless, none of the TAs held office hours or answered questions on the weekend, which was extremely inconvenient given that most of the assignments were due on Monday.
Despite being long-winded and reused from previous semesters, the assignment descriptions still had many ambiguities that students asked to clarify. Often, questions about these points of confusion went unanswered on Piazza, forcing you to go to office hours if you wanted an answer.
In a few cases, the TAs gave conflicting answers about how to implement the assignment. One of the TAs explained that these ambiguities should be interpreted as freedom for students to make their own "design decisions". That's all very well and good, but it would have been nice to know this philosophy at the start of the semester, instead of when it was almost over.
This was especially problematic because most of the assignments did not have a grading rubric until after the deadline. It was not always clear when our parallel implementation was expected to show speedup over the sequential version, or what we should be putting in the assignment reports.
There were other smaller issues as well. Lab 1 suffered from extensive grading mishaps - the average grade was in the 60s when grades were first released, and then increased to in the 90s after they were corrected. We didn't get our grades for Lab 2 for six weeks. There were a few problems with the Codio environment. In one case, an older version of the assignment was uploaded instead of the slightly different newer version. In another, the environment was unavailable for a few days because none of the TAs were checking Piazza on the weekend. Also, extra credit on the assignments is apparently only applied to the given assignment, i.e. you can only have a maximum score of 100 on any assignment, which is not how extra credit has worked in any other course I've taken.
I would not recommend this course unless you love mysteries, surprises, and people who disappear.
Overall Rating (1.4 / 5): ★☆☆☆☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (4.3 / 5):
Workload: 8 hours/week
Pros:
1. Learned a ton which I will use in the future
2. Great lectures
3.
Cons:
1. Extremely ambiguous HW and exams
2. Rampant cheating makes it hard for someone taking the class legitimately to succeed
3.
Detailed Review:
I learned the most out of this class than any other in the program. However, every homework assignment and exam had at least 20% of its questions be completely ambiguous and arbitrary to the point that the TAs/Prof couldn't give a solid explanation. HW answer explanations also aren't given so uhh good luck finding out what exactly you did wrong (especially on the choose all that are correct questions). You could ask on Ed but they would usually give vague answers as to not give away the answer key for future semesters, I presume. Not like it matters, as after the semester, rumor was that apparently a huge portion of the class were on discord calls doing exams and every HW together which explains why this class scored higher than classes in previous semesters. Made it very difficult to get a good grade by doing things legitimately and it left a sour taste in my mouth as I feel I didn't get the appopriate reward for the effort I put into the course.
Overall Rating (1.4 / 5): ★☆☆☆☆
Professor Rating (0.7 / 5): ★☆☆☆☆
Lecture Rating (1.4 / 5): ★☆☆☆☆
Difficulty (3.6 / 5):
Workload: 3 hours/week
Pros:
1. Key concepts covered
2. Statkey is helpful in understanding CI & hypothesis
3. Lecture slides are detailed enough
Cons:
1. Lots of technical glitches re. grading
2. Instructions scattered everywhere, platform is confusing to navigate
3. Theoretical distributions are dry and too abstract. Terminology and notations cause more confusion than help
Detailed Review:
First impression is important. This course could be made better to create a great impression for the whole program, or maybe move it later in the order.
Overall Rating (1.4 / 5): ★☆☆☆☆
Professor Rating (0.7 / 5): ★☆☆☆☆
Lecture Rating (0.7 / 5): ★☆☆☆☆
Difficulty (2.1 / 5):
Workload: 15 hours/week
Pros:
1. You get a systems credit for the degree.
2. 10-15hrs a week.
3. Book is easy to read.
Cons:
1. Lectures and book to not correspond to the assignments.
2. Lectures are generally a waste of time, so only the advanced topic lectures are required if you read the book.
3. Assignment are challenging simply because the course does nothing to help, and instead they require googling.
Detailed Review:
I found this course to overall be the an equivalent workload to NLP, at about 10-15 hours a week average. The majority of my time was spent reading the book and getting through lecture material that is not in the book to prepare for the exams. The course materials only pertain to the exam topics.
There are 5 assignments and I found the second assignment to be the most time consuming. Assignments 3-5 involve modifying the Xv6 operating system. Unfortunately the course materials, including the Xv6 commentary book, do not actually discuss the areas of the Xv6 OS that we have to work with in these assignments. For example, modifying malloc system call is required, and if you search for malloc within the Xv6 commentary there is zero discussion or notes. This is basically the result of searching for any course materials pertaining to the assignments. The lectures also do not discuss anything related to the assignments, other than surface level discussion on CPU and memory virtualization. Therefore you must google and research to find discussions and materials from other classes that give more guidance and discussion on the areas of the Xv6 OS that you will modify.
Overall Rating (1.4 / 5): ★☆☆☆☆
Professor Rating (0.7 / 5): ★☆☆☆☆
Lecture Rating (0.7 / 5): ★☆☆☆☆
Difficulty (0.7 / 5):
Workload: 2 hours/week
Pros:
1. Easy A?
2. Honestly struggling to come up with positives
3.
Cons:
1. Most of the first half is useless
2. Meaningless calculations to be performed by long hand
3. False precision on the Quizzes will ding you
Detailed Review:
I'll set aside the garbage experience with peerceptive - others have addressed this. My issue with the class is there's nothing about "predictive modeling" to be learned here. The first half has some Time Series (1 module) and that too is very limited - they spent a lot of time in some spatial modeling which probably 5% of the world uses. The first half half is almost entirely useless.
The second half has a lot of matrix math calculations to be done by long hand, SVD, PCA etc. which is covered elsewhere in the program. This course is highly disappointing and waste of your time.
Really they should scrap this course entirely and redesign it to truly teach predicitive modeling.
Overall Rating (1.4 / 5): ★☆☆☆☆
Professor Rating (2.1 / 5): ★★☆☆☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (4.3 / 5):
Workload: 13 hours/week
Pros:
1. You will learn something about ML
2. TA sessions will help you get through the difficult homeworks
3. Textbook for the second half is written by the professor and is fairly good.
Cons:
1. Lectures assume quite a bit of prior knowledge w/ probability and complexity theory
2. Textbook for the first half is difficult to understand
3. Peer grading is an extra time sink
(NOTE: the only reason why the Textbook Usefulness, Lecture Quality, and Professor Quality scores are not 1 is due to the second half of the course)
Detailed Review:
Overall, I'm disappointed in this class. Did I learn something? Yes. Was it painful? Yes. Did it have to be? No. The homeworks assume quite a lot of prior knowledge (even more than the lectures) and are obtuse. The majority of the time you will spend with the homework is just figuring out what the questions are asking. TA sessions are an **absolute necessity** unless you are just naturally brilliant. I would not have been able to complete the homeworks without those sessions. However, for this semester not all TAs are equally good, so you may have to organize around the one(s) that are most understandable. Peer grading is an additional time sink to the time one already spends in the course. At least on the programming side I think they should have figured out a Python-based auto-grader by now.
I took extensive notes about how much time I spent each week, so figured I'd share if you were wanting to know how to budget.
- W1: 8.75 hours (including HW0)
- W2: 8.75 hours (started work on HW1)
- W3: 30 hours (19.25 hours for HW1 + 10.75 for lectures/grading)
- W4: 18.25 hours (12.5 hours for HW2, 1.5 hours for HW2 grading, 4.25 hours for lectures)
- W5: 11 hours(3.25 hours for HW3p, 3 hours for HW3t, 4 hours for OH, 0.75 hours for HW3 grading)
- W6: 14 hours (9.25 hours prep for Exam 1, 2.25 hours for OH, 2.5 hours for Exam 1)
- W7: 5 hours (4 hours for lectures; 1 hour for OH)
- W8: 8.75 hours (1.5 hours for reading; 4.5 hours for OH; 1.5 hours for HW4; 0.75 hours for HW4 grading)
- W9: 18.5 hours (4.75 hours for lectures; 0.75 hours for reading; 7.25 for HW5; 4.5 hours for OH; 1.25 for HW5 grading)
- W10: 6.25 hours (3 hours for lectures; 1.5 hours for HW6; 1.75 for OH)
- W11: 9.5 hours (7 hours for Exam 2 prep; 2.5 hours for exam)
Overall Rating (1.4 / 5): ★☆☆☆☆
Professor Rating (2.1 / 5): ★★☆☆☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (2.9 / 5):
Workload: 12 hours/week
Pros:
1. A big chunk of the grade comes from homework
2. Optimization half had challenging homework and good lectures
3. Lighter second half
Cons:
1. Little to no TA or professor engagement aside from office hrs
2. Multiple choice exams with little feedback
3. Second half assignments too simple
Detailed Review:
First half: I liked the first half lectures and assignments but I wish there were some more proof-based assignments too as these would have helped for the exam and general learning. Some of the material was covered in Optimization but presented in a different way. It goes fast and I don't think I would have understood it as deeply if I didn't have Optimization beforehand. Avg 15 hrs/wk
Second half: The lectures were interesting, but most of the homework code was filled in for us and I do not feel like I learned enough. The professor did try to connect the concepts to real-life examples which was helpful. In many cases the grading rubrics were not even applicable for the current iteration of the class or topic (and a lot of that was never fixed or acknowledged). Avg 8 hrs/wk
Exams: Aside from unhelpful guidance that exams are based on lecture content, students had no idea what to expect. The first exam was awful, mean scores in 'F' range, and students did not get to review exam solutions until nearly the end of the course. The second exam was better, but again due to lack of communication it was a very frustrating experience.
Many student questions were unanswered on Ed. Conceptual questions in particular (not directly related to homework links/homework grading questions) were not answered very often, but luckily students stepped in to help each other. I felt like the staff did not care about students in this class and the learning opportunities were diminished because of this. Having taken Optimization I was really looking forward to this class but the exams and lack of support left a poor impression.