Pretty Hard Class But You Definitely Learn
Spring 2025Overall Rating (3.9 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (4.3 / 5):
Workload: 14 hours/week
Pros: 1. You will come out understanding the fundamentals of OSs 2. Lecture quality is really good imo, professor is very knowledgeable and its really cool how he can explain design tradeoffs. Cons: 1. It's annoying that you will have an exam and project due with in a day or two of each other (both midterm and final) 2. Projects are quite time consuming, which is why they make you work on it in groups. I got very lucky with a great group though, hopefully you do too. Projects are also very unclear on how to actually start and the steps to take. Instructions are long but still too high level. 3. Midterm was somewhat related to the projects while final was not related whatsoever Detailed Review: I got extremely lucky with a great group and they really did most of the work, which I feel horrible about. I underestimated how much time this class would take and feel bad taking another class (Algorithms) on top of this, which greatly reduced my contributions. I think it is still possible to take another class with this class, just take a less demanding one and start early on the projects. Please use the KAIST lectures, and even then, definitely use LLMs to understand what needs to be done for the projects. They appear to give you the answers and code needed, but be extremely wary, it's mostly not right or way more than you need. It seems like they have stripped some of the Pintos test cases for us, so for example, you don't need to implement memory mapped files in Project 3, nor a cache in Project 4. Definitely use printf statements a ton to figure out what is going wrong. What's odd to me though, is that I think taking Parallel Systems before this class is for sure better so that you can be comfortable with locks and race conditions in a more contained and smaller setting. I think it would be very rough to have learn all of that from scratch here. But the paradoxical point is that if you take this class first then take Parallel Systems, the lecture material in Parallel Systems will make a lot more sense (most of it went over my head tbh, it would have helped to have taken this class first). I do think people should take the compilers class (SIMPL) before this mainly because that touches on concepts like the stack and heap and even malloc at the very end, which is very nice context to have for this class. But it's not a hard requirement. You do have test cases for the projects which is very nice, but this class is still hard because the descriptions and test cases are not enough to know the path and direction of implementation you should take. I am sure most everyone used external resources (other lectures like KAIST, GitHubs of other Pintos implementations, LLMs, etc) to get these projects done. Midterm and final were entirely lecture based. Take really good notes when watching the lectures, in particular understand the tradeoffs whenever they're mentioned, and key ideas and concepts highlighted.