Average Workload
Average Difficulty
Average Overall
To summarize, -This class has the best set of projects. -The chosen lecture content is not great for 30-40% of the times as they are too specific to old papers. -Exam weeks are stressful, the question papers are given ahead, yet they are unreasonably hard and is atleast 50% memory based and 50% logic based.
From Non-CS STEM major but took GIOS before AOS. For GIOS, I spent around 16-17 hours a week and got a solid A. For AOS, I spent about 24 hours a week. This is my 4th class.
Projects:
Project 0: concepts check and threads I'm not fond of this homework—just an unnecessary warmup.
Project 1: Virtual Machine Scheduling in KVM(C, libvirtAPI)
Design & implement an algorithm to allocate/deallocate CPU & memory between VMs. I have redesigned my algorithm several times and spent 50 hours. I like the project and learned from it.
Project 2: Barrier Synchronization (C, openMP & openMPI)
Based on the paper and course contents, you pick up barrier algorithms to implement and then write a report. I spent around 40 hours. I wasn't exposed to openMP and openMPI before. It's nice to know. I like this project, and it helps me understand barriers much better.
Project 3: Distributed Service using GRPC (C++, gRPC)
Implement async client and server. The GIOS project 4 prepared me. At least this time, I already knew gRPC. This project also has some subtle parts that require thinking. I spent around 15 hours on it and had fun. It is nice to have a non-heavy project in the mid of the semester. I appreciate it.
Project 4: Implement MapReduce Framework (C++, proto3 ,gRPC)
Implement a simple version of MapReduce based on the paper. Readme is well-written. It is a pretty cool project. I spent around 45 hours. The paper read time is not counted here. This is my favorite project so far in OMSCS.
Note that I did all projects on my own. But you can also find a partner to work together from P2 to P4.
Lectures, papers, office hours, TAs:
Tests
Such a relief the questions are given ahead and allow us to discuss in the piazza! Some questions are pretty hard, and there are no alignment and clues on the correct answers after tons of thinking and discussion. The exam week is stressful.
4th class in the program, previous: GOIS, Applied Crypto, RAIT. Overall, I thought this class was OK.
Pros:
Neutral:
Cons:
Overall, this class was somewhat interesting. Due to the difficultly of the tests I placed "hard" on this review for the difficulty, if the tests were easier it'd drop the overall difficulty a lot. If you're interested in distributed systems & virtualization, I'd recommend taking the course.
This class is more of a "Systems Analysis" class than a raw OS class. There is a ton of lecture content, papers to read and fun projects. If you want an A in this class, expect to spend 20+ hrs a week simply due to all the papers and hangouts. The worst part about this class is the expectation of regurgitating very specific implementation details of obsolete or research systems on the exams, which are a good portion of the grade.
That said, if you are interested in system design, studying and learning about design decisions of said obsolete and research systems can be very insightful.
I enjoyed the projects. Projects 1 and 4 took the most time. 1 because of having to learn libvirt and 4 because of the scope of the project (simplified MapReduce framework). Project 2 was a pure algorithms assignment and project 3, which took me less than 5 hours felt more like a breather project. Some of the requirements on gradescope can be unspecified and people in piazza post frustrations, which are justified.
If you don't stress out about getting an A, you can go in depth with just the papers you are interested in and watch lectures for the rest.
All in all a satisfying class and is the kind I would expect when I do a Master's Degree.
In a lot of was I was extremely frustrated with this course. As I got further into the course I found myself a lot more interested in the content and some of my frustration started to dissipate. The earlier parts of the course focused on traditional operating system design and considerations, but the course quickly started to focus on parallel and distributed systems. So much so that this course might be better named as "Intro to Distributed Computing" instead of "Advanced Operating Systems".
If you don't have proficiency with C/C++ or multi-threading, you may find this course extremely difficult. If that is the case I'd highly recommend taking GIOS first before you commit to taking AOS (especially because GIOS was designed to give the foundational knowledge required to succeed in AOS).
Pros:
Cons:
Exams: The exams are close book and open ended questions only. The test questions are released 3-4 days before the exam is due and students are allowed to collaborate with each other to come up with the best answers ahead of time. Regardless, these exams are still relatively difficult and grading is based on specific key talking points. Not all answers are directly from the lectures/readings, so you will be forced to think critically based on the information you've learned up to that point. You will learn a ton simply through the process of answering the exam questions.