OMSCS Review & Tips: CS6200 – Graduate Introduction to Operating Systems
2025-08-11
Semester Taken: Fall 2023
Grade Achieved: A
Specialization / Track: Computing Systems
TLDR: A challenging but fulfilling course, can be serve a workload benchmark for other OMSCS course in the next few semester. This is a introductory course about computing systems in general and not just an introduction to OS.
Table of contents
- ✅ Summary
- 📚 Course Content Overview
- 🛠️ Workload & Time Commitment
- 🧑💻 Assignments:
- 👩🏫 Instruction & Course Staff
- 💡 Tips for Success
- 📚 Resources that might be useful
- 📈 Personal Takeaways
- ⭐ Conclusion
✅ Summary
In my opinion, this is a high quality course with very good and mature support structure (support channel, assignments, etc). The assignments in the course are challenging but extremely fulfilling if you manage to crack them while exams are layout in a way to discredit rote learning. The materials covered are very dense and the readings provided are also very heavy and a good grasp of concepts through abstraction is important to score well for the course.
Do note that this course used C/C++ programming languages which are very low-level so do familiarize yourself with them before embark on the course.
📚 Course Content Overview
You may refer to the course public site for a sample of syllabus.
The course covers things that you should have learnt in an undergrad course about operating systems: threads, critical sections and synchronization, scheduling, I/O, memory, etc just to name a few. There are newer contents that I have unfortunately not encountered in my undergrad study: virtualization, datacenter technologies, distributed systems, SMPs, kernel threads, filesystems, etc to name a few.
In term of practical work, the course introduced me to working with POSIX system libraries such as pthread, shared memory, message queues, sockets, etc in C programming language. It also included working with gRPC in C++ in the last programming assignment. All this new concepts are very exciting to learn from my perspective and I really enjoy using them in this course.
🛠️ Workload & Time Commitment
I spent roughly 20-30 hours per week on this course. Majority of the time allocation is on the programming assignments and here are some activities that eat up so much of that time:
- Researching documentations
- Designing of solutions (a.k.a Pen and paper time).
- Implementation of code and testing
🧑💻 Assignments:
The course has 1 mid-term, 1 final examination and 3 programming projects (each spans for about 4-5 weeks). Course is heavy-loaded throughout, best to be taken earlier on when you are not yet burnt out.
Exams
- Midterm and finals are not cumulative in term of content (that is for final, you just need to study the second half part of the semester).
- Final examination was trickier for me.
- Reading all designated reading materials and understanding them in-depth is the key to scoring well for the exams
Programming Assignments
- Coding assignments are graded on Gradescope, with limited number of submission allowed (plan wisely and use the submission frugally!)
- Assignment 1 is pretty much about socket programming and coding a multithreaded library using socket under the hood to support a predesigned protocol.
- Assignment 2 takes it a step further by asking you to design and implement your own communication protocol, making use of IPC constructs learnt from the course. From then you can implement some server-client system with this protocol.
- Assignment 3 aims to introduce students to working with modern gRPC instead. In my opinion, this is the most interesting part of the course as these technology are quite modern and surely a valuable skill to learn.
- Each project has a "documentation" component and you must submit it as well to score full mark.
- The assignments are challenging but not hard to score. Moreover, the TAs also give a “suggested” deadline for each sub part of the assignments and as long as you follow them, you are pretty much safe. Don’t procrastinate and leave it to the last week of assignments as any good design solutions take time to be designed and implemented.
👩🏫 Instruction & Course Staff
Instructor Style & Quality of Teaching:
Prof. Ada did a good job in summarizing and simplifying the research paper (reading materials) in her lecture slides and videos. The papers are chosen carefully to fit in nicely with the topics being studied and they are definitely more recent than the syllabus from my undergrad school (despite my graduation in 2021). That being said, the course visited basic undergraduate OS knowledges in a very fast pace, which might not be ideal for people without much computer science and engineering background. One complain from me is the amount of knowledge student need to grasp to score well as you need to master both the basics and the reading papers at the same time, and some of the materials are not that easy to learn (distributed data consistency model, etc). There are some mistakes still in the lecture materials/quizzes and even slides, however these points are still not yet updated or addressed.
There are office hour every week and it does helps with guiding the students to the correct direction in their assignments as well as consolidating their knowledges for exams. However, being absent from those video calls does not reduce the chance of you scoring well (like in my case).
TA / Forum Support:
I really like the fact that this course has a very vibrant and active community. Most of the announcement and Q&As with instructors can be done through Piazza like any other OMSCS course, but the highlight is in the course’s Slack channel.
Slack channel is very very active and you may find answer to your problem through this channel faster than through Piazza (given the fact that the channel also archive chat of past semesters and probably somebody already has faced the same problem as you). TAs on slack channel also give very good suggestions and can help you break the wall to achieve your success in the assignments.
💡 Tips for Success
Here are some tips that worked for me:
- Read the resources before doing assignments. Knowing what tools are there in the toolbox is good when you are facing with a technical problem.
- Do design on paper first before committing to coding the solution to the assignment. Without proper designing guiding your implementation, you would be like chicken without heads.
- Read the papers and make notes then review the summary in the lecture note. This help you internalize the materials better.
- There is no absolute answer in the course, rather “it depends”. Know your design, the assumptions and the trade off. These are the key thing to takeaway (and transferrable to system design as well).
- The “what-if” score breakdown is provided quite early on in the course. Use it to plan out your targets for exams. Also refer to past years score distribution for a good gauge of where you are in the cohort this year.
- Write down all the formula in a sheet of paper and go through them as you revise for exam. This all-in-one place can help save you time (but also make sure you understand and are able to derive them, instead of just copying them).
📚 Resources that might be useful
- The LPI book
- C++ primer book
- OSTEP book
- Dinosaurs book on OS
- Reading materials from lectures
📈 Personal Takeaways
Pen and paper / Whiteboarding do wonders. Designing any systems is about understanding the problem in front of us, the constraints, the budgets avaiable. Designing is not black and white, it is colored with trades-off and we need to make the decision that best to achieve our priority. These ideas resonnates with what many of my mentors mentioned previously in their day job
- What I enjoyed most: Finally making use of my hard-copy of LPI book.
- What challenged me the most: Understand problems with so many moving parts and design a working solution for it.
⭐ Conclusion
Rating: 9.0/10
Verdict: Very good overview course on OS (and system design). Heavily loaded course but also very rewarding. I recommend this as a benchmark course earlier in your program, using it to judge coursework for any other modules. Is the coming course has higher or lighter load than GIOS???
Note: This review reflects personal experience and avoids disclosing restricted course content, in accordance with Georgia Tech’s honor code.