Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (1.4 / 5): ★☆☆☆☆
Difficulty (2.1 / 5):
Workload: 10 hours/week
Pros:
1. Homework and flipped classroom assignments are not difficult to finish.
2. Quite lenient grading system
3. Tutors and professor are active on Piazza
Cons:
1. Basically, all the assignments are "fill-in-the-holes" type, instead of learning how to implement things from scratch.
2. Very confusing instructions
3. The intervals between assignments are very short. You really have to make sure that you carve out some time every week or plan ahead.
Detailed Review:
It is not an "academic" course. You don't have to follow the lectures to be able to complete the assignments. It is a quite easy course as long as you plan everything ahead.
Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (5 / 5):
Workload: 23 hours/week
Cons:
1. Programming assignments are really hard
2. Quizzes and Mini Problems are extremely tricky
3. The grading was extremely harsh
4. Course pace is too fast even for a long term semester
Detailed Review:
As a non-native english speaker, I found the questions were very tricky. You have to be really good at English in order to solve the quizzes and mini problems. Even many English native speaker fall when doing the quizzes and mini problems. Solving programming assignments, mini problems, and quizzes take a lot more time than the estimate given. You know you are taking a difficult course when smart students from other courses that taking this class are really anxious thinking if they can pass this course. Considering the high level difficulty of this course, the grading was really harsh even after curved, you only get B+ even your score is 86.
Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (2.1 / 5): ★★☆☆☆
Difficulty (3.6 / 5):
Workload: 20 hours/week
Pros:
1. The course is quite practical. You learn by doing during 75% of the semester.
2.The first programming assignments are a great C refresh. You must learn C to an intermediate level to continue.
3. The professor is really comprehensive and helpful. He and the TAs put a considerable effort to understand why your homework fails and give partial credit if needed.
Cons:
1. The lectures tend to deviate from the core concepts and the teacher spends too much time repeating the same diagrams over and over. This is not necessarily bad but I feel is kind of repetitive. Maybe it was better to have prepared material and draw/write just the difficult ideas.
2. The lectures are way too long. I'd prefer to have several 5-10 min lectures than a few 45-60 min ones.
3. The time spent looking at advanced topics is limited, and it's a brief overview over only a few topics. That is not enough to call it an "Advanced" course
Detailed Review:
I really liked this course. It was enjoyable even-though I didn't have any previous preparation on OS. The homework is practical and that's a relief for a part time student like me. I feel that the lectures can be improved to give away some studying material (like slides) and should be a bit more digested. The teacher and the TAs were nice.
I didn't like that the lectures lacked of enough information to tackle the homework. You needed to figure out several aspects of it. Such homework had always hidden test cases and a newbie on OS like me never figured out those hidden features to implement. Another bad point is that the homework is an exact copy of the xv6 exercises. Didn't like that part. The homework should be at minimum a slight variation of that material.
Overall Rating (3.6 / 5): ★★★★☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 15 hours/week
Pros:
1. PintOS projects definitely help demystify how OS works. If you do not have a CS background or your undergrad CS does not go deep in the OS as you wished, this is good.
2. Lots of C programming practices. The 2025 TAs are quite active.
3. Well, you have to practice self-sufficiency
Cons:
1. Course videos are outdated.
2.
3.
Detailed Review:
It is a love-hate relationship. At the beginning of every project, I will hate it very much because reading the long project instructions will get me overwhelmed. After that, I had to consult the materials available online - that is what I meant by self-sufficiency. It's a lot of self-taught honestly.
I ended up reading 2/3 of the textbook OSTEP. I did not read the concurrency part because I had already taken Parallel System. But the textbook is great and enjoyable.
Half-way or when I finish the project, I will get a huge sense of accomplishment because I now 'get it' how VM / storage works. And then next week I will hate it again because the next project begins.
Ps. I think the Prof. has a great style of teaching. He explains things well and usually mixes that with history/narratives. I kind of enjoy the videos.
Overall Rating (3.4 / 5): ★★★☆☆
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (2.9 / 5):
Workload: 10 hours/week
I recall the homeworks from Professor Klivan's being fairly challenging. Professor Liu was very hard to understand due to his accent but the easier homeworks he assigned made up for that.
Overall Rating (3.4 / 5): ★★★☆☆
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (2.9 / 5):
Workload: 9 hours/week
Important Note: you don't actually have to take Optimization before this course. It's listed as a prereq, but many of us did not and did well in the course. Both instructors are very high quality. The assignments for both sections are just Python implementations of algorithms in Jupyter Notebooks. Optimization had one midterm/final for that portion of the class, and it's the same for OL. Both are only worht 15% of your grade. That being said, the Optimization midterm is a ~20 question multiple choice test that focused on core concepts and then being able to do one step of the algorithms learned in class. The final for the OL is 5 short answer problems testing a qualitative understanding of key concepts. The assignments for the Optimization component could sometimes take more than 10 hours. The OL assignments were less involved. Optimization would post ~3 hrs of lectures and week and OL would average around 2. The difficulty drops noticeable for the OL section. I personally didn't like the Optimization portion because I wasn't very interested in the material. If you like learning the theory behind optimization algorithms, then you'll dig it. I found OL super interesting because you're basically learning the theory behind how to build optimal recommendation systems. They also curved the class HEAVILY in the end. They were very generous.
Expanded Grading
Difficulty: 4 Optimization, 2 OL
Workload: 11 Optimization, 7 OL
Rating: 3 Optimization, 4 OL
Overall Rating (3.1 / 5): ★★★☆☆
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (2.9 / 5):
Workload: 10 hours/week
Klivans is a fantastic professor and does a great job motivating the discussion. Liu was ok, I felt like his lectures were more confusing/not as well organized.
Expanded Grading:
Rating: 4 Klivans, 2.5 Liu
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (1.4 / 5):
Workload: 7 hours/week
Pros:
1. Lots of extra Android support available through documentation and StackOverflow. If you know how to Google, you can find pretty much everything you need
2. Shouldn't be too hard if you have development experience (there's lots of starter code given, a lot of the class is just filling in the right Kotlin code)
3. Kotlin easy to learn, particularly if you know a JVM language already (previously had Java and Scala experience)
Cons:
1. I never want to touch Java code again after learning Kotlin
Detailed Review:
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (2.9 / 5):
Workload: 17.5 hours/week
Class is interesting but the videos should be revamped to be more content rich. The course is following the book chapter by chapter which makes it a lot of content for summer. Def the course is harder in Summer than in Spring because of how condensed the semester is. Programming assignments make you better understand the concepts, but start them early because debugging can take days.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (2.1 / 5):
Workload: 7 hours/week
Pros:
1. Containers and serverless were useful/interesting
2. Not a huge time commitment
3. Projects in groups of 3
Cons:
1. Irrelevant and boring projects
2. Long, boring lectures
3. Advanced topics are pretty useless
Detailed Review:
I really wanted to like this course and came into it excited, but I can't help but feel disappointed with how it all went. My main gripe is with the projects - they're super boring and entirely irrelevant to what we learn in class. I felt this way in AOS, but the feeling was more acute with this class. This could also be a me problem - I don't know C very well and I'm not a systems programmer, so the projects generally just felt like a slog. The only plus side is that the projects were in groups of 3 so the onus wasn't entirely on me to do it all (I had a good group). The lectures are also very long and boring...and like a previous review said, I'm likely to forget everything from the advanced topics.
The professor feels more at home in these lectures vs AOS, which is good. It's probably more interesting material for him to teach. The workload was also pretty light, so if you're looking for an easier course then this is a good candidate. It just feels like a missed opportunity - we could have dug into some Docker code, or some serverless code, or just anything more interesting than what we did. But oh well.