neat-panther-1271
Edited
• 3 Credit Hours
Loading charts...
Key adjectives used by students — color intensity reflects sentiment
neat-panther-1271
Edited
frank-salmon-8101
excellent course!
Edited
polite-leopard-1997
Edited
epic-heron-1683
Edited
serene-turtle-2346
Edited
strong-leopard-2587
Edited
quiet-beaver-3340
Edited
warm-panda-4734
Edited
humble-zebra-5681
Edited
creative-leopard-6072
Edited
For context this was my first course in OMSCS, and I come from a non CS background. However I have been working as a Software Engineer for 1.5 years when I started. I finished this class with an A.
Pros:
Cons:
First class in the program, mech engineering bachelors from 10 years ago, some coding experience from the past few years of self-teaching. Overall, I learned a ton about how computers and operating systems work! I thought it was super interesting how applications interact with the OS, all the parts that make up an OS, and there was so much I learned about what goes on behind the scenes it made me in awe of computing systems. It felt like more than 17 hours a week. I would recommend starting projects ASAP and try to stay ahead of the schedule provided for the lecture modules. It helps watching the corresponding modules for each project before starting, so you should complete them before the project is even released ideally to avoid concentrating lots of those hours in heavy weeks.
Projects - 100, 100, 110 Midterm - 77 Final - 93
Final grade - A Hours / week - 17
Projects Directly related to some of the chapters conceptually but you’re pretty much on your own to learn the coding. The time below includes the ReadMe write-up which I spent 8-12 hours on for each project.
Project 1 - 70 hours. It took a ton of time for me since the only experience I had in C was from cs50 Harvard a long time ago. The warm up parts did a nice job of easing you into the main parts of the project though. It involved using sockets to send and receive data, then implementing parts of a provided library, then making the library multithreaded.
Project 3 - 40 hours. It was the easiest by a lot in my opinion. Inter-process communication between cache server and proxy to serve requests to clients.
Project 4 - 60 hours. This was the most rewarding but perhaps the most frustrating. You need to implement a distributed file system using gRPC. It took a really long time to understand all of the steps clearly but it was cool seeing it working and keeping all the files across all clients and the server in sync. I probably spend an extra 10 hours doing the extra credit.
Tests The midterm was shorter and didnt include as much info as the final. I thought that both were pretty fair; there was a balance of facts and memorization with some questions where you had to apply your knowledge. I probably put in 15 hours for the midterm, and 30 for the final as I went through all my notes thoroughly, did a ton of practice calculations, made and practiced flashcards, etc.
Lecture Modules (17 total) The lectures are really good and I only had to seek supplemental knowledge / clarification a few times over the course of hundreds of 1-5 minute lecture videos. I took thorough notes and spent and average of 3-5 hours on each module.
Good The amount of knowledge you will take away from this course. I didnt know a lot about computers in general before this course, so I went off on some learning tangents in the middle of the videos. Overall I feel like I have a much better base than before. Slack was awesome to work through problems with other students and get help, but I did not like Piazza as I hate their UI and found it very hard to use and find what I needed. TAs were really helpful and their attitude in answering questions was proportional to the intelligence of the question. Despite all the hidden stuff lots of people including me complains about (see below), I thought the projects were really well put together and were super captivating.
Bad In project 1 a little, and project 4, it did feel like we were herded to implement the solution in a specific way. It did take a lot of extra time to figure out the abstracted functions / files in project 1, and in project 4 it felt limiting only being able to edit and submit certain files. However, after spending some time with the code it becomes clear why it is structured this way and in the end I dont have any major qualms with it. The exams are weighted too heavily in my opinion. A project takes ~50 hours and is worth 15%, where exams are 25%. Some exam questions test your memory on little details, so if you lose 5 or 10 points on one of them, it is almost equivalent to 5 hours of project time. I get that the concepts are important and we should know them thoroughly but I would be more happy with the exams and projects being equal, especially since the projects are so grueling and time-intensive. There probably wouldnt need to be such a large curve this way. There are a bunch of errors in the quizzes and some lecture videos, I would have expected them to re-make the videos at some point in the past 10 years instead of leaving errata notes below which are very easy to miss.
This is my first OMSCS course and I feel I learned quite a bit. I did not formally study Computer Science in my undergrad so everything over here was pretty much new to me or things I didn't know in a lot of detail. I really enjoyed the projects and I feel that was where I learned the most. The mid term was relatively easy but that could also be because the first two modules are easier than the last two. The effort I put into the course was quite sporadic, to be honest. I mostly spent the weekend before project deadlines working on the project. This is not how I like to do things but I just joined a new team at work and there was a lot going on so unfortunately this was the case. I would recommend getting headstart on the projects because there were really times when I was so stressed and worried that I wouldn't be able to complete the project but I was lucky and did well on the projects. The end term was the hardest for me and I barely got 48 hours to prep for it but that was because of my personal circumstances. However, because I did well on mid term and the projects I still managed to get an A. Overall, I feel if you keep up with the schedule they recommend, you can comfortably do the course. You get plenty of time between projects as well. The exams are MCQ and fill in the blank style but similar to the quizzes in the lecture. The end term is relatively harder and I would recommend allocating good chunk of time for that. The professor and TAs were all very nice and gave pretty good feedback as well.
Background: I graduated in Fall 2024 with a BS in CS at a similarly ranked school. I took Operating Systems there but had to drop the course. This is my first OMSCS course and I am currently work in Devops/Infra. This is the only course I took this semester. I got an A in the course.
Overall, this was a great course, and a great introduction to OMSCS. The lecture content was interesting and presented in an easy-to-understand method. The lectures were split into 20 or so short videos and some quizzes to accompany them. This made it easy to rewatch parts of the lecture content I had trouble understanding, as I just needed to find the accompanying video. The material itself was not too difficult to understand, however my background definitely helped me in this regard. The readings were also interesting, and lecture content goes over their important concepts in good detail.
The projects were the real fun portion of the course. I enjoyed every project and learned a great deal from each. They are not OS-specific projects, but deal with network programming, and helped me understand some of the concepts we covered in lecture(synchronization, IPC, gRPC). Projects 1 and 3 were in C, and 4 was in C++. I was comfortable with both so it was never an issue for me, but if you aren’t familiar, it might be difficult to pick up quickly. Overall I probably spent around 40 hours per project, and got full credit on each of them. Make sure to read Piazza posts and the Slack channel for tips, and don’t be scared to ask questions! The test cases weren’t particularly difficult to pass, and you have plenty of submissions. Any test case that fails gives you nice error messages that help you understand where you went wrong.
The exams were mostly multiple-choice with some matching. I found that they were heavily based on memorization, and the projects don’t really help with the exams. Make sure to understand the lectures thoroughly and use lecture notes provided online to fill in any gaps. Be sure to ask in Piazza or Slack as well. Overall, I found the exams relatively easy.
In general, this class helped me learn so much more about what the role of an operating system is, and made me a far better programmer regarding managing dynamic memory and multi-threaded applications. I learned so many things in this class! It is hard to put in words just how much I learned. If you like low-level programming and want to learn about the intricacies of the machines we take for granted, take this course!
Non-CS STEM major (Electrical Engineering), no coding experience in the past 5+ years. Took GIOS as the first class in the program. This was a tough class that consumed a lot of time, especially because I had to learn C, C++, and gRPC on the fly. However, this class teaches you a lot about how operating systems work and makes you a strong (or stronger) C programmer by the end. I would highly recommend this class if you are willing to learn and are prepared to put in the time. Project 1 (Pr1): I spent the most time on this project because I had to learn how to code in C and read Beej’s Guide to Network Programming. This project is broken into four parts. Each part is designed to help you learn what is needed for the subsequent part, and by the end, you can create a multi-threaded getfile library. I spent a significant amount of time compared to others, likely because I had no prior C experience and hadn’t been coding in recent years. • Part 1: 10 hours • Part 2: 10 hours • Part 3: 80 hours • Part 4: 80 hours
Project 3 (Pr3): For this project, I spent a lot of time thinking about the design, referring to comments on Slack to understand how other students were approaching the problem, and asking questions to verify my understanding of the project and my design. Writing the actual code was less time-consuming compared to Project 1. • Part 1: 20 hours – This part was simple and helped me get familiar with the CURL library. • Part 2: o 20 hours – Researching and coming up with the design. o 40 hours – Writing code, implementing, and debugging.
Project 4 (Pr4): This was the hardest project for me, even though many others thought it was the easiest. It may have been easier for students who already had exposure to gRPC or something similar. If you have time after finishing Project 3 and before starting Project 4, I highly recommend spending some time learning about gRPC—it will help a lot. • Part 1: o 20 hours – Learning how gRPC works and understanding examples. o 10 hours – Writing the actual code. • Part 2: o 40 hours – Figuring out how the overall library was intended to work based on the provided codebase. While I had to do this for all the projects, this one was particularly hard because it was complex, and there were so many different .ch files to read and fully understand before I could grasp how the DFS was intended to work. o 30 hours – Writing the actual code.
Midterm Exam: The midterm wasn’t too hard. Just keep up with the lectures and make sure you thoroughly understand the practice exam.
Final Exam: The final exam was much more challenging. The amount of material covered on the final is roughly twice what’s covered on the midterm. By the time I finished Project 4, I was six lectures behind, and I had only about 10 days to prepare for the final. Trying to cram all the material into a short amount of time, like a week, was brutal. Since I calculated that I only needed 55+ points to achieve 84% or higher overall, I took the exam without adequate preparation—and that was a big mistake. I spent several days anxiously waiting for the final exam grade because I thought I had bombed the test.
Final Thoughts: I agree with the strategy of starting projects as soon as they are posted. As long as you put in the time, refer to the Slack channel for clues when you get stuck, and ask questions, you should be able to score 100% on all the projects. If you get 100% on all projects and score at least the median (~75%) on the exams, you should be able to earn an A, which typically has a cutoff of 81%-84%, depending on the class average. If I had to retake the class, I would allocate 1 hour per day to studying or staying up to date on lectures, even while working on projects. Cramming everything before the midterm and final because I dedicated all my energy to getting perfect scores on Gradescope was not a smart idea. Since the three projects account for 45% of the total grade and the two exams account for 50%, allocating time to exam preparation has a better ROI for achieving a good grade.
My Results: I ended up with a grade well above the curve for an A (82% for Fall 2025). • Projects: Full scores (~100%) on all three. The class median was also nearly 100% for all projects. • Midterm: Scored in the 75th percentile, well above the median. • Final: Scored in the 50th percentile, around the median.
[Disclaimer] I took it in Fall 2025, but the option is not available when adding review.
Grade breakdown: 94%: Midterm: 85%, Final: 87%, Projects: 102%, participation: 100%
Time breakdown (+/- 10%): Project 1: 60h, Project 3: 40h, Project 4: 40h, Lectures: 30h, Reading papers: 30h, Midterm preparation: 10h, Final preparation: 25h
Hours spent/week: 12-18h
Software engineering (3YoE) with python and C# experience . Non-CS/Non-STEM background First OMSCS class
My journey and recommendation:
Before the course starts I spent about one month before the term working through Beej’s Guide to C Programming and Chapters 1–6 of Beej’s Guide to Network Programming. I aimed to gain a basic familiarity with the material, and it helped tremendously in reducing stress once the projects began.
Projects: I generally follow a three-stage workflow: reading instructions, drafting the design, and coding.
That said, it’s also perfectly valid to code first and let the design emerge later —each project is different, and you should choose the approach that works best for you.
Writing project reports You are required to write three project reports, each worth 1.5% of your total grade, with a maximum length of 12 pages. I highly recommend using flowcharts to illustrate your design and thought process. Additionally, the instructions note that the strongest reports are concise and clearly explain the author’s reasoning. I can confirm this from experience—my reports were ~6 pages but I clearly explained why I chose one design over another (time constraints count).
Writing project reports (continued) Sometimes, it is more strategic to deprioritize certain report components in favor of exam preparation (each exam is worth 25%). For example, I chose to skip the flowchart in the last report (worth ~0.3% of my overall grade) and instead used that time to review course material for the final exam.
Exam preparation Complete the practice exam and carefully review any course topics you feel unsure about. Many topics from the practice exam appeared on the actual exams. Since the exams are closed-book, it is more effective to understand how to derive formulas rather than relying on memorization.
Mental Health I tried to cap my weekly study hours to 15 hours. It helped me stay focused and prioritize materials that had the most impact on my grade. I also intentionally spent about 5-10 hours a week on my hobbies to maintain positivity and avoid burnout. I used Flora to track time spent (non-affiliated); any other time tracking app works too — I just love free apps :)
[DISCLAIMER] Review was for Fall 2025, but semester is still not present.
I tracked the whole time that I spent on this course. It should give a more accurate perspective to upcoming students that may want to enroll into GIOS about the time expectancy. The total that I spent on this class, between the projects, tests, lectures and reading posts/chatting on slack (I didn’t always track this latter one) was… dumbrolls... 210 hours. This was for Fall 2025. Given that the class ran for about 16 weeks, the average is ~13 hours per week.
This number could vary depending on your background and previous experience. If you’ve worked with C/C++ and/or gRPC before, some of the projects could take less than they did for me. On the contrary, if you aren’t that experienced with some of these technologies or come from a non-tech background, the time expectancy might increase.
As for myself, I listened to other folks' advice and read a book about C (BeeJ’s Guide to C programming) before enrolling. Though I ended up also reading half of the BeeJ’s Guide to Network programming during the course (trust me, you will need this one). My recommendation is the same as others have stated before, learn C prior to taking this class if possible. Though it’s still doable learning on-the-fly, it could certainly be a more frustrating experience. As said, BeeJ's Guide to C programming is an excellent resource. You don’t need to read the whole thing, only the basic stuff. Then you can jump to the Network programming guide. Before or during this class.
As per the content itself, I can’t say anything bad about it. I’ve learned a lot of stuff, both practical and theoretical. I will list some of the practical ones I consider the most relevant for my career: I learned C, honed my abilities in C++, learned and applied gRPC concepts, learned to think around and use threads properly, learned distinct IPC mechanisms and know what happens under the hood now when my programs run.
Ended up getting an A in the class with a final 91 score. If you do everything well, you shouldn't have much problem with getting 100% 's across all 3 Projects. But please, start the projects as early as possible. I learned this the hard way with the 1st one. As per the midterm and final, study well for these exams, as they are about 25% of your score each. If you get above 85 (final class score), if I’m correct, you are guaranteed an A. There’s a curve that might help you bump up your grade letter in case you get short though. This semester the minimum for an A was 82 for example (the curve changes from semester to semester, depending on the average across all students).
Overall, excellent class and excellent material. I loved spending time chatting with random folks in slack, getting frustrated over gradescope complaints and sharing those frustrations along with my classmates. This is one of the best classes in the OMSCS program. If you’re going for the Computing Systems specialization, highly consider taking it.
Non STEM Undergrad + CS Minor. First class in the program (Taking In FALL, not Summer, option for Fall is not released yet). Ended with a high A without too much trouble. There is not a lot of "small assignments" scattered throughout but more 3 major projects and 2 exams to watch out for. If you get them done quick you should have no trouble in the course. Study (and participate in Slack) and you will be fine. The lectures are wonderful and the projects are.. okay. You WILL learn a lot and if you are not a CS undergrad I highly recommend you take this class. If you are.. well, this will mostly just fill some gaps (I took Systems courses in Undergrad).
[DISCLAIMER] This review was for fall 2025, but semester is still not present. A great experience, I learned a great deal. Math undergrad. If you ever do something remotely related to backend this course will be great help. You will learn how nodejs works and many server architectures, like ecent driver, multi process, multi threaded.
I studied/worked a great deal for this course. Ended up with 95%.
P1: Really long, but doable. Be good at c and try to complete something related to the first chapters of beej’s guide. ME: Not hard, but really take your time to learn the concepts well, do not try to memorize just for the sake of it. P2: A bit harder, this actually made me think and design a solution from scratch, but totally worth it. Not very time consuming. P3: The hardest project, really take your time to design and test well your solution. It’s doable 100% though. FE: It convers a lot of material. Some papers are really hard to read, others are really to read. The main difficulty was to remember all the contents.
My recommendation: Do this course and learn every lecture of it, it will teach you how computers work in a very abstracted and comprihensible way. I dedicated a great deal to it but if you put the time, the results will come, have faith.