Overall Rating (4.6 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (2.9 / 5):
Workload: 10 hours/week
Pros:
1. Great content. Very useful.
2. Similar to DL, the assignments are genuinely interesting.
3. Mostly asynchronous/self-paced.
Cons:
1. Less theory. More application.
2.
3.
Detailed Review:
This course has a similar structure to the plain DL course. The primary differences are: the content is more interesting for people who have progressed beyond the "novice" phase, and the later programming assignments (in particular, the last one) take substantially longer.
The final programming assignment was tough, largely from issues in my code. The code itself was simple but very small mistakes can snowball into bad results, and the training runs required a lot of patience. I would suggest starting the programming assignments early. Waiting until the last minute will be very stressful (ESPECIALLY the last assignment).
Overall Rating (4.6 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (2.9 / 5):
Workload: 16 hours/week
Pros:
1. Professor/Recorded Lectures are great -> funny and helpful.
2. Assignments scale and build off each other well.
3. Very practical, and offers skills that are good for basic software engineering practices.
Cons:
1. Professor is not active in the course anymore (at least this semester) it's only run via the TAs.
2. A lot of assignments, you can find yourself backlogged if you're not careful.
3.
Detailed Review:
This course is probably the most fun I've taken in the entire program, mostly due to the professor and the assignment quality. It's pure practical/programming with no theory involved so be prepared for that. The Assignments build off each other well and introduce new android programming features slowly but surely, allowing you to grasp one feature before moving on to another. The final project is also quite fun and allows for a good amount of freedom to develop whatever app you want to. I went from not knowing anything at all about android programming to building a fairly close to accurate full-stack app in the span of one semester, so you definitely learn a lot in a short amount of time.
With all that said, be prepared for a lot of assignments. Work is mostly split between FCs (short assignments that are designed to make you work with a topic introduced in a lecture that week) and HWs (longer assignments that are combinations of topics and are more focused on actually using features in a real life app idea). These come pretty rapidly and if you're not careful you can find yourself in a situation where you have to juggle 2-3 assignments at a time (especially close to the end of the semester when the project is due). Also, be prepared for a course with no interaction with the professor. From past reviews I'd read that the professor used to be quite active in the course but that longer seems to be the case. Unfortunately that seems to be the norm for this program now.
Overall Rating (4.6 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (3.6 / 5):
Workload: 10 hours/week
Pros:
1. Great lectures! I found the first 2 weeks a bit boring/simple because I had some ML knowledge already, but then it ramped up and became a lot more interesting. Lecture content is quite modern (referring to things from 2019/20).
2. Good assignments (conceptually valuable, scaffold code always provided, not too difficult).
3. Excellent TA presence on Piazza (and Prof Durrett also replied to the more intricate questions)
Cons:
1. It was not clear how sophisticated our final project needed to be, which was a bit nerve-wracking (they made a new final project this semester). Prof Durrett sort of clarified later on that our projects didn't need to be too complicated, but still the expectations weren't clear. Admittedly, I did start the final project very late.
2.
3.
Background: Maths + CS background. First semester of the program. Did Parallel Systems too. Got an A in this course.
Detailed Review:
Overall Rating (4.5 / 5): ★★★★★
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (2.9 / 5):
Workload: 14 hours/week
As others have mentioned, this is a C-heavy course, so make sure you brush up before the course, or plan 20-30 hours extra at the beginning to pick up the core concepts. Note that some of the difficulty in this course comes down to understanding a lot of the nuance of how memory is managed in the system and how you manipuate it in C. The exams align well with the textbook and lectures, but the projects are a separate beast. The projects build on one another from the beginning, so you really need to keep up with them or you can get behind quickly. As a professional software engieer, this course was very relevant and I picked up a lot that helps day-to-day work. Top-notch instructor! Total time end-to-end was 222 hours, which is roughly 14 hours a week.
Overall Rating (4.5 / 5): ★★★★★
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (2.3 / 5):
Workload: 16 hours/week
Really good course; though, I figure that this is probably strongly due to my experience in software engineering. If you're coming from little or no programming experience, this is going to be a challenging course. The course is basically straight up app programming. The lectures are great, but the order of the lectures is a little wonky. That is, sometimes you'll hit a lecture topic that would have been really useful a week or two before, and sometimes you'll hit a lecture that you wont have enough background to understand until a few weeks later. MAJOR CON: There were 3 TA's and they were STILL really far behind in the grading. Something like 30% of the course grades were not realeased until AFTER the final project was submitted. YMMV on this probably depeding on the semester and the TAs. I got the sense that the instructors were a bit "checked out" for active engagement, but they did ALWAYS respond to comments eventually. Despite these negatives, the course was still 4.5.
Overall Rating (4.5 / 5): ★★★★★
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (1.8 / 5):
Workload: 8 hours/week
Easiest class to date in the program although I come from a Math background. If you are familiar or have experience with linear algebra and some basic data science models used in industry, it should be relatively easy
Overall Rating (4.5 / 5): ★★★★★
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (2.9 / 5):
Workload: 6 hours/week
Listen, so I got a B in the class so take my word knowing this. If you make a point to go to OH, esp with Liu, there's no reason you shouldn't get full marks on the HW assignments. Once I connected the dots there, I halved the amount of time I spent on this class. The exams are tough in that they are not representative of examples given in class/textbook. Therefore, you just gotta know critically what's fundamentally going on and apply it there. I thought both profs were great, great foundational course for this program, and I didn't even do that well.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 10 hours/week
Pros:
1. Good assignments
2. Textbook was informative and easy to read
3. TAs were responsive on Piazza
Cons:
1. Some of the lectures were a bit slow
2. If you've already taken an undergrad OS course this will mostly be a review
3.
Detailed Review:
For background I don't have a CS degree, have never taken OS before, and didn't know C before taking the course. Overall it wasn't too bad. There are 5 assignments and 2 exams. The first 2 assignments are fairly easy and allow people to ramp up on their C knowledge. The later assignments were more difficult but the TAs and Piazza helped. I spent about 20-30 hours a week on this course in the first month because I was learning C while trying to do the assignments but afterwards I averaged about 10 hours a week.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (2.9 / 5):
Workload: 12 hours/week
Pros:
1. Take-home exams for the second and final exam.
2. Great lectures which explained the theory in-depth.
3. Perfect class for taking in the first semester.
Cons:
1. Closed book/notes for first exam.
2. There's a lot of theory to learn and apply.
3. Textbook problems can be difficult to solve.
Detailed Review:
I took this course for my first semester at MSCS and I feel like this is a great course to take early on. I was taking Machine Learning simultaneously and some of the concepts carried over to that course. This was also a good reintroduction to mathematical concepts after not using them in-depth for a few years.
The lectures and textbook are available online and flow together nicely. There was a lot of thought put into how the course was taught. As other reviews have said, the professors really care about this material and want the students to learn it. One issue with the textbook I had was that some of the problems given can be a little difficult. Most of solutions to these problems are given in the textbook with explanations, so this was a minor issue.
There were three exams, the first being closed notes/book and the other two being take-home style. I personally don't like closed-note tests since they are typically more memorization than actual problem-solving. I greatly preferred the take-home tests, especially since they were about applying the theory learned in the class to look at the material differently.
Assignments were weekly, but there was a regrade system if you wanted to fix any mistakes. Up to two weeks could be used to resubmit any assignments, which was generous. This could also be used if you missed a deadline for the assignment. Some assignments were proofs, others were programming in MATLAB. Difficulty tended to vary by week. Screenshots of the weekly progress on EDX were also required to be submitted.
I felt like I never went above 20 hours for both lectures and assignments. But I did need a lot of time for the take-home exams, so I'd recommend putting aside plenty of time during the exam weeks.
My main issue with the class was with the material itself. The class is designed so that you generally learn an unoptimized algorithm for solving a problem and throughout the material it builds up into a better optimized algorithm. A lot of theory goes into optimizing the algorithm, which can build up very quickly. By the end of the course, you have a ton of theorems that you need to know how to use. These theorems can be difficult to remember if you aren't keeping track of them. Thankfully, there are summaries at the end of each section which help immensely.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 11 hours/week
Pros:
1. Puns
2. Piazza Support from TAs and Instructors
3. Generous Curve
Cons:
1. Extremely Difficult Midterm
2. First Half of the Course Homework Pace
3. Stress
Detailed Review:
The midterm and final were more YOLO than OLO. The final was an adversarial multi-armed bandit.
Alex was great. Being an MSCSO student, he did great. Hopefully, more MSCSO students can fill his shoes.
The first half of the course was pretty brutal with homework due every week. I didn't really start to connect the dots until studying for the midterm. The midterm was an extremely difficult, multiple-choice test. The second half of the course was lighter, but still very stressful after seeing my midterm grade. Thankfully there was a generous curve at the end.
I did not take Optimization prior to this course. I don't know if taking Optimization first would have really been better. I think I would have done better on the midterm, but overall I did well and was happy with my grade after the curve. The Optimization portion was just brutal for me.