Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (2.9 / 5):
Workload: 12 hours/week
Pros:
1. Project/software development based assignments.
2. Learn about interesting and relevant virtualization topics (docker, serverless, etc.)
3. Straightforward & fair exams.
Cons:
1. Projects are not discussed in class - you're on your own.
2. Piazza support is limited.
3. Lectures can ramble on a little, and it can be difficult to pick out the important takeaways.
Detailed Review:
Overall, a pretty good course. I feel that I learned things here that I otherwise wouldn't have if I just tried to research virtualization technologies on my own.
Projects within the course are centered around building a hypervisor in groups of 3. There are 5 assignments where you will implement a little 'piece' of the hypervisor within an already largely developed code base. It's a little harder than it sounds with projects 3, 4, and 5 giving you more trouble than the first 2. Plus, there is virtually no course support for the projects - you're pretty much on your own to figure everything out. The projects were not discussed at all in the lecture videos or in supporting materials and I didn't find asking for help on Piazza to be worth the time to type up a long post explaining the problem - I would usually get a 1 sentence response that caused more confusion on my end.
Otherwise, there is a midterm and a final. Both are fairly straightforward to study for and are just short answer response style canvas 'quizzes'. The professor doesn't make you download any invasive monitoring software or record yourself taking the test (pretty creepy if you ask me @ ML Summer '21) - this is a big plus and very appreciated!
I'd recommend some systems background before taking this course - Undergrad OS/Adv Operating Systems or equivalent. There is a fair amount of assumed background knowledge (paging, processes, isolation, etc.) that you will have a hard time understanding if you've never taken an OS course before.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (2.1 / 5):
Workload: 7.5 hours/week
Pros:
1. Practical material
2. Fun assignments
3. Final project really pulls together everything you learn throughout the course
Cons:
1. Disorganized lecture materials
2. Constantly changing assignment due dates
3.
Detailed Review:
Breakdown of time: (HH:MM)
Final Project 28:48
Final Project Proposal 2:08
Final Project Reviews 0:45
Flipped Classroom 0 2:14
Flipped Classroom 1 2:14
Flipped Classroom 2 1:29
Flipped Classroom 3 2:04
Flipped Classroom 4 1:23
Flipped Classroom 5 5:54
Flipped Classroom 6 2:03
Flipped Classroom 7 2:15
Flipped Classroom 8 4:32
Flipped Classroom 9 2:33
Homework 0: Setup 0:51
Homework 1: Peck 7:37
Homework 2: Fling 4:50
Homework 3: Mplayer 8:28
Homework 4: Reddit 14:18
Lectures 11:17
Total 105:52
Note: I paired this course along with SIMPL.
The course got off to a bit of a rocky start - all of the EdX lectures were super disorganized (had dates from 2022 and a bunch of outdated content) and there was a terrible lack of communication at the beginning of the semester. Thankfully, the communication improved throughout the semester. The organization of materials did not - EdX was a mess from day 1 until the end, probably because they didn't want to invest the time in reorganizing because of the shift to EdX.
Logistics aside though, this course was really fun. The structure of the course is great - basically you have a set of lectures and some external reading material that pairs with a flipped classroom to help you get hands-on experience with the topic. The homeworks then dive a little deeper into the lecture materials and have a slightly larger scope of work. All of the flipped classrooms and homeworks feel like you're bowling with the bumpers on - a lot of the code is provided for you and you just need to fill in the blanks. When you get to the final project, however, you're on your own. You'll need to stand the project up from start to finish. This was, in my opinion, the most rewarding part of the class because everything you learned throughout the yeas comes together here.
Overall solid course, would recommend - especially to those newer to the program looking for an easy first course.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 10 hours/week
Pros:
1. Exams were fair and good for learning
2. Learned a lot from the projects
3. Info very relevant to industry
Cons:
1. If you are looking for more of an advanced look at operating systems, this probably won't scratch the itch.
2.
3.
Detailed Review:
I really enjoyed this course. I started out with very little OS knowledge, and pretty weak C programming ability. By the end of the semester I feel much stronger working on large (ish) systems code, and I think I gained a pretty solid OS foundation with exposure to advanced and current topics.
If this isn't going to be complete review for you, I highly recommend it.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (0.7 / 5): ★☆☆☆☆
Difficulty (1.4 / 5):
Workload: 15 hours/week
Pros:
1. Easy to understand material.
2. Professor provides relevant demo code for assignments.
3.
Cons:
1. No viable lectures on EdX or Canvas.
2. Android documentation is still lacking :)
3. Start of the semester was rocky with little to no communication from the instructor/TAs.
Detailed Review:
Android Programming still has 5 (really, 4) "homeworks" that are essentially projects. These are the most time-consuming parts of the course. These are not entirely difficult, but do usually require you reading up on some Android documentation to complete. Overall, not entirely too difficult.
It also has 10 flipped classrooms that take about 1-3 hours, depending on the quality of some of the demo code provided. The demo code usually lines up pretty nicely with the flipped classrooms, so you're almost always given a working example of what you're expected to do.
Finally, there is one final project, which is essentially an app that you build from scratch. You get about 1 month at the end of the class to work on this with no other assignments other than the report that goes alongside the app. You are not asked to reinvent the wheel here, and are really just expected to showcase what you learned throughout the course. Still, you are not limited here, and there were some really cool apps made.
Overall, this course is a fun, light course to pair with another class if you've programmed before. Even if you haven't, it is still highly doable as you end up needing to reference demo code and Android documentation frequently. The only gripe I have here is the lack of interest in providing a clear lecture set, as most of the existing ones in EdX are outdated, or extremely out of order. It did not seem like anyone wanted to take care of that, with the professor just saying he would not do anything on the EdX side. The code you are provided, though, is enough, but it sure would be nice to have some actual lectures to watch.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 15 hours/week
Optimization (first part):
I took this class immediately after taking Optimization with Prof. Caramanis. At first I thought the Optimization part was going to be a piece of cake, and while it's definitely true that it helped having taken the previous class, it didn't make it easy. I still had to put in a lot of hours to get the assignments in correct shape. The first Midterm was very theoretical and I did poorly, and I did ok with the homeworks. It's a very important topic, nonetheless, so I would recommend taking some sort of Optimization class while doing this degree
Online Learning (second part):
This was a concept that was completely new to me, and I had a lot of fun. The assignments were kind of binary in their difficulty ... if you didn't "get" it, it's very impossible, but once it clicks it becomes very intuitive. The second midterm was much more manageable, and there were no proofs, just a big picture understanding of the concepts.
Language: Python. My level is somewhere between beginner and intermediate, so a more advanced student will probably find the Assignments easier than I did. It would very difficult to take this class with only basic Python capabilities (although I suppose that's true for the whole MS). Finally, the Online Learning part could have been much more difficult (if you dive into the proofs), but I guess out of time constraints Prof. Shakkottai decided to just test us on the algorithms and the general concepts.
Don't know my grade yet. But overall, a great class.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (2.1 / 5):
Workload: 5 hours/week
Pros:
1. Straightforward exams and assignments.
2. Good if not interested in doing heavy systems-related work.
3. Responsive TAs and Professor.
Cons:
1. Bad if interested in learning more about low-level systems and OS.
2.
3.
Detailed Review:
I liked the course and thought it's a good course for folks coming into the degree. I am not particularly interested in systems-level programming and what it entails, so it was refreshing seeing the level of difficulty this course was. It's an upper-division undergraduate OS course so take that into consideration if you expect OS-related research etc. Most of the time you will spend reading over xv6 documentation not so much programming the solution which is the norm when it comes to large codebases. In exams, you are allowed one page of notes and not proctored, even then if you pay attention to the videos and do the assignments you probably won't need this. I had a fine time and not having to be stressed over a course for a semester was nice.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (2.1 / 5):
Workload: 6 hours/week
Pros:
1. Workload is pretty light
2. Professors are very active on Piazza and will readily give their time to help you
3. Requires little programming for those with minimal coding experience
Cons:
1. Typos found almost every week on lecture slides and homework
2.
3.
Detailed Review:
Professors were very nice and communicated actively on Piazza to help students understand. It will depend on your background how difficult this course is for you; for those with a math/stats background fresh in their mind, this will be mostly review and not that difficult. Probability section is much more difficult than the stats section. Problems are all problem sets/proofs, no real practical applications. Textbook is available for free if you google Z library and download it there. Was able to do most of the course without looking at the textbook, was helpful for some probability homework problems, as the full proofs were given in the textbook.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 10 hours/week
Pros:
1. No exams, assignment and project-based course
2. Rubrics for assignments are straightforward
3. Nice application of AI/ML in the healthcare field
Cons:
1. Longer project at the end
2.
3.
Detailed Review:
I found this course both interesting and engaging! The application of machine learning and AI to healthcare data was a unique learning experience. There are no exams, so the course is project and assignment-focused. Each assignment has a detailed rubric of what is expected. Exemplary assignments from past students are also provided, which helps clarify expectations.
Assignments are graded by TAs, who are responsive to questions on Ed and generally follow the rubrics when awarding points. Prof. Ding’s lecture videos and tutorials provide tutorials for each assignment. The main challenge is the final project, which has many components and is time-consuming, and also requires some thought, as it's graded based on creativity, so it’s best to start early.
Overall, this course is pretty manageable and would pair well with a tougher course for balance.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (1.4 / 5):
Workload: 3 hours/week
Pros:
1. Newbie-Friendly Intro to R
2. Discusses Basic Data Viz and Data Science Principles Applicable Regardless of Software
3. Easy Assignments (R coding aimed at 2 Questions) and Projects (A bit longer and requires short paragraph explanations but still easy)
Cons:
1. As with some other courses, peer review has its disadvantages..
2. Requirement to participate in Discussion Board or comment on others' Discussion Board posts can result in inorganic discussion forum posts.
3. May not cover some more recent developments in Data Science and not very rigorous for a graduate class.
Detailed Review:
Very good newbie-friendly intro to R (Prof. Wilke's slides contained very clear pseudocodes, or examples you can easily apply to the homeworks, and to your own work as a data scientist or researcher). This class is meant to introduce R as a data visualization tool, while teaching principles at the same time that are applicable regardless of software (e.g. if you switch to Python, Excel, Tableau, etc. for visualization). Aside from basic Data Viz principles, topics in Data Wrangling, Unsupervised ML (PCA, Clustering), Visualizing Geospatial Data, and even Data Ethics are also briefly discussed. No required textbook but you get clear notes and slides from professor's website (plus optionally read the professor's book on the subject matter).
Easy and straightfoward course overall. Although, peer review can get a bit tedious from time to time (but not as much of a hassle compared to harder courses with peer review). Also, when Data Viz was offered, you are required to either participate in the Discussion Boards or post a comment or reply to others' posts, which can make activity in the Class Discussion Forums (Piazza during this course's offering) look inorganic or forced from time to time, rather than genuine or authentic conversations. Lastly, if you're already very experienced in R, you may not get much value from taking this class.
This Data Viz course is unavailable as of Spring 2025 (likely being revamped). For the time being, the course Principles of Data Science (PDS) has similar content in terms of R introduction, Data Wrangling and Visualization, but also goes into more generic Data Science Analytical Questions. Note that the main difference between the two is that Data Viz largely focuses on Visualization, while in PDS, data visualization and wrangling modules are shorter, as more of PDS touches on basic analysis and R tools depending on the type of question (e.g. causal inference, prediction, etc).
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 10 hours/week
Pros:
1. Well paced course
2. Assignments were fun, each building off of your previous solution
3. Professor held office hours and listened to student suggestions
Cons:
1. If you've taken an undergrad algorithms course, you already know the first half of the course
2. The second half could have used some implementation
3. Wish there was more in terms of readings, or pointers to which parts of the suggested texts
Detailed Review:
tl;dr: If you like RL, game theory, or robotics, this course is worth it. But don't expect to come out of the other end knowing how to apply to a real robot. Maybe something closer to classic video game AI.
The first half of the course is a mix between classic search algorithms and dynamic programming in a deterministic setting. The second half added "uncertainty", with a focus on a robotics use case. This was the part of the course I was most interested in, since I didn't have any experience here. This section ends with Partially Observable MDPs that we didn't get to consider in the RL course. If you took an undergrad algorithms course and RL, you'll easily already know ~50% of the course content.
I really enjoyed the assignments. They allow you to choose from several algorithms to implement, so you can make it as simple or complex as you want. All except the first build on parts of your solution to the previous one, so there is a risk that you'll spend more time later on if your previous solution wasn't the most efficient.
My one gripe is that the second half was mostly a knowledge dump of concepts/theory and not much implementation. We didn't implement anything past Bayesian Inference (Week 7). I would have really liked to get a better understanding of Particle Filtering and SLAM through application in a homework (or bonus assignment).