Your feedback has been sent to our team.
20 Ratings
Hours/Week
No grades found
— Students
Like what the previous reviews said, this class is nothing to lay off on (that's why we called it OS: OH S$^! when you get a million segfault errors on qemu 10 minutes before the deadline). This class has taught me more than any other CS course in this university about Computer Science as a whole (tied with CS 2150 and CS 4102), especially the hardware aspects and how it relates to the kernel. This class was not an emotional roller coaster for me, personally, but rather an enlightenment of what I actually wanted to do in CS. Even though I did not touch grass this semester (I took it with CS 4102 lol), I have learned much about locks, threads, processes,deadlocks(not spooky), file allocation tables, inodes, page tables, spinlocks, scheduling, RPC calls, exceptions, more locks, and why my computer don't work (AKA you probably messed up your kernel or a segfault).
Reiss is probably the best professor to take with for this class; he is very intelligent and probably one of the smartest CS professors in UVA (if not the smartest). I went to office hours once with him, and he fixed one bug that I was not able to discern until he mentioned it, causing all my seg faults to magically disappear to wonderland and make me pass all my test cases (sort of).
Quizzes can be a hit a miss; sometimes you do really well, and sometimes you screw up because you did not pray hard enough to the kernel gods. But Professor Reiss does drop 2 to compensates, which helps a ton. Sometimes the wording throws me off, but if you say why it does in the comments, you could get some points back. You have to actually pay attention to lecture or rewatch the lectures while you're taking the quizzes to understand what is going on. Reiss throws a lot of stuff at you, but if you take the time and effort to understand what is going on, you will heavily be rewarded on the quizzes and ..... the homeworks (oh boy).
Ah the homeworks; the thing that made me unable to touch grass this semester. The homeworks can vary in time and difficulty. Some of them are very lengthy, but not because they are difficult, and others are very difficult but are actually really short in the amount of code you write. The most difficult ones for me were Paging, Shell, FAT, and ThreadPool. Learning the debugger can help you especially, but you can also get away with it through "ghetto debugging", i.e print statements before your error occurring/segfaults. This helped tremendously, alongside talking to the TAs and (begging) asking for suggestions on how to implement your solution is very helpful. Piazza can be a huge game changer as well because Reiss will almost certainly respond to your questions within an hour, which can be very helpful in dire situations (1 hour before submission deadline..). I will summarize all the homeworks as succinctly as possible.
intro to xv6: First level of mario 64 type beat. 30 minutes.
Shell: if you do not parse correctly, GG. 12 hours (two weeks).
Lottery: Oprah (xv6) gives gifts, but instead "tickets" to all your pids to hopefully win! (6 hours).
Life: Threads madness. (5 hours)
Pool: Threads madness 2: ft locks. (10 hours)
Paging and Protection: Revenge of the xv6 (like actually this was the worst no cap I do not care what anyone says). (20 hours +) two weeks.
FAT: 2000 memes. This was probably the best one in my opinion. Most fun out of all of them. (13 hours). Two Weeks.
twophase: United Logs of Transaction States. (4 hours).
I will admit, some of they were really bad (probably the hardest assignments in the CS departments), but I have learned a lot and do not regret spending much time towards some of the hardest topics in CS. A lot of people made fun of me for having to take OS due to BSCS, but I am kind of glad I did because I have learned more about how processors are able to communicate with the kernel (which is something everyone has because you're looking at this review) making me more knowledgeable about how they interact with other things in computer systems. This course has given me a broader scope of what CS can offer towards my interests. I would suggest if you want to take OS, take it with Reiss because he will ensure you will be ready for any job that focuses on Operating Systems or any other hardware related job. He truly wants his students to succeed and have a good comprehension on Operating Systems as a whole, especially through piazza and his office hours. I doubt any other professor will teach you about OS as effectively as Reiss would.
This class was a doozy. Definitely the hardest CS class at UVA - both for the difficulty of the material and the amount of time I spent doing the assignments. The weekly take-home quizzes were quite difficult and the homeworks took incredibly long - some of them I probably spent 15-20 hours on. Start the homeworks early if you can, however, Reiss has a very generous late policy that I took advantage of probably too many times. Reiss is a great professor and very responsive - especially on Piazza. I also appreciated that when people asked questions in class he was never condescending at all unlike a lot of CS professors when you ask something they think is obvious. This class is brutal and will take a ton of your time but I have no complaints about Reiss, so take it with him if you can.
When I took it, this class was 30% quizzes, 55% programming homework assignments, and 15% final (take-home and online). The quizzes were take-home and open notes, around 4-6 questions, and a mix of short-answer, multiple-choice, and select-all. The wording can be really confusing and the quiz content did require a pretty advanced understanding of the material (it wasn't anything you could just pull directly from the lecture or the slides). If you show your work or thought process in the comments section, you can sometimes submit a regrade request and get partial credit. The homework assignments were pretty challenging, they generally took me around 6-15 hrs per week. Most notably, FAT, Shell, and Paging are the hardest (though once you understand the content, a lot of it is about parsing). I would definitely suggest starting early and getting help through OH when stuck.
Reiss is one of the most knowledgable professors I have had so far and he's incredibly responsive on Piazza (which is so important, especially right before a homework is due). I can usually get a response within a day and oftentimes get responses an hour or two after posting. I honestly have no idea how he manages it so well. I will say that his lecture style sometimes assumes you already have background knowledge and doesn't build up the foundations in an organized manner (like introducing various elements of hardware and such). He does build in room for questions though, and a lot of the info comes from people in class asking prompting or follow-up questions so he elaborates more.
#tCFspring2022
This class is literally the hardest CS class and maybe even the hardest at UVA. Although, taking it with Reiss was probably the best option, as he really does know his stuff. However, the HWs are long and sometimes ambiguous, so I'd recommend starting them early if you can. The good thing is that the late policy is insanely generous (10% off for 3 days late and 20% off for 5 days late). If you don't need this class as a requirement, I'd stay away from it. #tCFspring2022
The class is designed like all of Charles Reiss' classes. Quizzes, Homework, and a final at the end. Quizzes were not too difficult as they followed pretty close to the material that was posted on the slides. The final was similar to the quizzes as it was just held online. Homeworks is basically where it gets rough. My only compliant is just how inconsistent the amount of time that was needed to be dedicated to each homework was. Some assignments I could finish in under 3 hours and another homework might take me 3 days straight. Long story short know ahead of time which homeworks are easy and which are not. Paging, FAT, in particular are extremely time consuming and long. Talking with TA's though was generally pretty helpful and overall I've had good experiences with them. The last thing is that even if you pass all the tests that are assigned to the homework it's not a guarantee that you will get full credit which is kinda annoying.
Also Charles Reiss is legitimately one of the most intelligent people you can meet.
#tCFspring2021
The most important thing is to keep up with the material (lectures and labs) and not get behind. Once you do it's almost impossible to catch back up and you'll be taking late penalties on everything from there on. The 13-15 hour/week metric is accurate. The HWs are very in depth and you need to understand how to do the assignment, actually write the code for it, and then spend a considerable amount of time debugging (which takes forever in C and even longer for the XV6 assignments). If you aren't already, you NEED to become familiar with Linux and the terminal.
The TAs are extremely helpful and will work with you for as long as you need on specific questions/help you debug stuff if you're stuck. If the OH queue is backed up, they'll also sometimes do a public session where they go through pseudocode and basic concepts for the HWs so people can get started. Reiss is also extremely helpful in OH.
The lectures are very involved and you really need to attend every one of them and take notes or do whatever helps you remember the material. If you can't attend them, you need to watch the recording ASAP because again, catching up once you're behind is pretty much impossible.
Overall, somewhat difficult and very time-consuming class but you learn a ridiculous amount and really start to feel more in touch with how computers do things. If you try to keep up with the class it never really feels overwhelming but it is definitely a 10+ hour commitment per week to do so.
I regret that I did not like this class - Reiss is a q u a l i t y teacher and he really knows his stuff. There's a lot of worthwhile content that (unlike any other class) has made me feel like an actual computer scientist. I would compare this class to 2150 (which is my least, least favorite class), but this review in of itself may be skewed considering that I started skipping on a bunch of assignments and did just enough to get C instead of GC (COVID-19 semester). Grades are generally rough, but there is a curve at the end. Don't skip lecture (or if you do, hold yourself accountable to watching them online - things move really fast and once you stop it's hard to catch back up). Start labs early and seek TA help. I know it's been said before, but I'm saying it again because I thought I could skip on this advice since I didn't need to do any of this for 2150. 4414 is very different, and considerably harder. Please, please, please don't be like me.
Reiss is very knowledgeable and the class is not too difficult. If you read the textbook BEFORE class and go to every class you should be fine. Everyone that doesn't read the textbook gets massacred. This class teaches you vital topics such as concurrency(!!!), unix, IO, virtual memory, sockets, file systems, distributed systems, etc.
Reiss is a fantastic professor. Yes, the material is very difficult, but he does a great job of explaining the concepts and using examples that really help make sense of those concepts. The material isn't always the most exciting, but you learn a ton and it is very valuable knowledge (even if most of us won't need to know the super-specific details to get by day-to-day in a job after graduation). His homework writeups are phenomenal - providing step by step instructions of what needs to be done to complete the assignment. One warning - there is a significant step up in homework difficulty after the midterm . Paging, FAT, and Twophase were the three hardest of the semester by far for me. But if you are willing to dedicate enough time to the class, all the homeworks are doable. OS is the big bad wolf of the CS department, but honestly if you take it with Reiss it isn't that bad (at least, not as horrible as I was expecting based on the things I had heard going in). Of course it's still very challenging, but he makes it manageable. Strongly recommend taking OS with Reiss if you can.
Ah, good 'ole Operating Systems, the ultimate Oh S*** class! (Get it OS.. never mind)
But seriously, out of all the courses I have taken at UVA so far, this was up there with the most challenging, most frustrating, yet most interesting and satisfying courses I've ever taken. Reiss is a fantastic lecturer and if you can take it with him DO IT! While he does move pretty quickly through the material, such that at times it may feel like your head will spin out of control, taking the time to rewatch the recordings (or just skipping lecture and only watching the recordings) and slowing things down to try and understand what is going on will be critical to your understanding and appreciation of the material.
First, let's discuss grading: 55% go towards homeworks, 15% on the midterm, 15% on the final, and 15% on the weekly open-note quizzes. (for those of you who had Reiss for Comp Arch, they are the exact same type of quizzes as you had to do for that class) The midterm and final's difficulty is just what you'd expect -- it's hard, but not impossible! I believe the average on the midterm was around a 69% (nice!) and the final was similar. (Don't worry too much about those grades -- he curves grades up at the end of the semester). Next, I want to talk about the weekly open-note quizzes -- I am not a good studier whatsoever. I hate studying. As a matter of fact, I am literally procrastinating studying for another class as I type. How do you get someone who hates studying to study? Force them to with quizzes! The quizzes are hard, such that I spent a good 2+ hours on 5 questions, but that is basically 2 hours you are spending studying the material. While they are hard, the average still came out to just over 80% for our class, so they aren't crazy hard. In a weird way, I think I kind of liked the quizzes because it always gave me a feeling that I was successfully comprehending the material that was being presented going into the next week ... until my confidence was shattered by the final and most significant portion of your grade --> homeworks!
The homeworks are all challenging. I literally just finished the last one about an hour ago. I was told going into the course that this was the 2nd easiest homework in the class behind the first one (which was really easy), so I procrastinated until the last second and started on noon the day it was due -- 11 hours later, I submitted it with just 1 hour to spare before the deadline. Do not wait until the last minute to start homeworks! *Clears throat* DO NOT WAIT UNTIL THE LAST MINUTE TO START HOMEWORKS. Just trust me on this one, although I successfully started turned in all of the homeworks on time, I had 4 WAAAAAY to close for comfort moments this semester, the most notable being a last second edit and turn in with 24 seconds (Yes, seconds!) to spare. It is just not worth it. While I started 75% of them 24 hours or less before the deadline and submitted them all on time, do not do what I did. However, if you insist on trying to be dramatic like me and waiting to start until the point where you figure you can juuuust get it in on time, here are the ones to watch out for: Shell HW (parts 1 and 2) -- I spent about 15 hours per week for the two parts of this assignment. Paging HW (parts 1 and 2) -- this is the HARDEST lab, at least in terms of understandability. It is one of the harder topics in the course, combined with some really weird C syntax quirks that make this lab next to impossible without TA help. I also spent about 15 hours per week for 2 weeks on this lab. FAT HW (Part 1 only) -- Part 1 is the LONGEST lab. I spent 24 hours (no, that is not a typo) the first week on FAT. In terms of conceptualization, it is not a super difficult topic to understand, but getting started is very challenging. You will end up writing somewhere in the ballpark of 300-650 lines of code for this lab over the course of two weeks. The problem is that, as you will find out, getting started on labs (knowing where to begin) is difficult and takes time. Now, combine that with an unbalanced lab where 75% of the coding is done in part 1. That is FAT part 1. This was THE ONLY LAB excluding the first one where I put my full attention into the assignment before the day it was due -- and this was also the lab that I submitted 24 seconds before the deadline. By the way, part 2 of this lab took me 4 hours. (Reiss, if you are reading this, please make FAT more balanced, thanks!). All that said though, if you do miss a deadline, it is not the end of the world. In what might be the most generous grading policy at UVA, you can turn in the homework up to 3 days late for 90% credit. Not bad!
* Note, many of the time estimates for later assignments might be a little biased since starting with the Threading HW we were not at school to COVID. This caused Office Hour issues such that is was much harder to get the help you needed.*
My thoughts on the homeworks in general are this: they will be frustrating, you might feel as though success is gained through random and lucky changes to various wonky C functions, and some of the harder things to implement might not seem related (Seriously, does Prof Reiss have a string parsing fetish?); HOWEVER, these are the 2nd most satisfying and fulfilling homeworks you will complete behind only 2150. You will learn a lot, and it will develop problem solving skills. One last note on the homeworks, specifically office hours. DO NOT be that person that asks a TA to walk you through the entire solution and take a literal hour when the queue has over 30 people on it (Has happened multiple times). It is rude, it is selfish, and it defeats the whole point of the class. Sure, 15-20 minutes is reasonable when you just have that one bug you cannot figure out and when OH is not busy, but please think about others too. Come to OH with specific questions, or if you are confused and don't know where to start, ask at a high level where to start. Don't ask TAs where to start coding without trying to figure out what you are actually doing. Okay, rant over.
In conclusion, Reiss is a great lecturer (my favorite at UVA thus far), you will learn a crap ton, and the homeworks are hard. But, if you come into the course with a good attitude (and probably not with a super hard schedule) it won't be so bad. In fact, you might even find yourself enjoying it. Time: expect around 20 hours of commitment per week in studying, lectures, quizzes, and homeworks. Expect to be completely lost at times, but know that it will all work out and you will be just fine!
Professor Reiss may have had a shaky first semester teaching OS, but it's clear that he listened to all the feedback and has his act together this time around. I've heard countless horror stories about OS as I'm sure many of us have, but Reiss has managed to create a course that is extremely rigorous and challenging without ever being overwhelming. The homeworks definitely take a lot of time and effort (start early!) but the hints are super helpful, and a lot of what you need to complete the assignments are covered really well in lecture. The non-xv6 ones are also really interesting and help you learn more about how OSes work (for example, creating your own shell or FTP server).
I *highly* recommend Reiss for OS. He's super-knowledgeable about the subject and manages to explain all the material pretty well (even anticipating our answers in the slides, sometimes!). He cares about his students and is actively looking to improve how the course is taught. Set your expectations appropriately and I think you'll be pleasantly surprised.
Best CS class. It's about twice as hard as 2150, but you learn about 4x as much, and the stuff you learn makes you realize how everything actually works. It's the perfect combination of low-level and high-level programming. Some of the homeworks are in C and some are in C++. The Shell homework hurts a lot, but that's just because you've forgotten how memory works. After that, the homeworks aren't too bad until after the midterm, with Paging and Protection, easily the hardest assignment I've ever witnessed. 40+ hours on that sucker. FAT is also pretty hard, but doable, and it makes you realize what a file really is. FTP is just annoying.
Start assignments as soon as they're released. Go to office hours as soon as possible and go frequently. Everyone skips lecture for some reason. I recommend going and asking questions because Reiss moves fast, and sometimes you need to get clarification.
I recommend this class to anyone who wants to get good. BA included.
This course probably taught me more than all my other classes at UVA combined (besides maybe CS 2150). Reiss is hands-down one of the best CS professors at UVA; despite teaching OS for the first time, he came to class prepared with tons of slides to help explain difficult material. His quizzes, while tough, did an amazing job in forcing us to review the material (which let's be real we would never do willingly). The assignments, while incredibly tough, did an amazing job in reinforcing concepts. The class website was so well-organized and simple that I never had to look on Collab and found all the course material easily. Reiss is also the nicest guy--he was always answering questions on piazza, in class, and at office hours. On top of that, he's definitely the smartest professor I've ever had; looking at his test code taught me more C tricks than any other programming class I've taken. If you enjoyed CS 2150, you'll love OS. While OS is known for being an "impossible" class, that's probably because only about 10 people showed up to lecture regularly. It's more on the class than the professor that many people didn't end up doing well. Overall, OS with Professor Reiss is an amazing and rewarding experience if you put the time and effort in. Highly recommend :)
IMO the difficulty of this class is vastly overstated by fourth years who are checked out and just want to graduate. You can reasonably get an A by actually listening to lectures (not just reading slides), using the post-quizzes to reinforce your learning, and starting the assignments early so that they only take ~10 hours a week. Unlike Grimshaw, Reiss records lectures, doesn't require homework writeups, and is super active on Piazza, so you have plenty of resources to help you. Don't get me wrong, homeworks are definitely time consuming and Reiss should've had decent instructions from the start instead of editing them in, but this was his first semester teaching OS and future sections should have a better time.
OS was definitely the hardest class in the entire CS major. No joke. Do not take this class with any other hard CS class. Don't take it with Algo, don't take it with Compilers, don't take it with ANY HARD CS CLASSES in the same semester.
The material was difficult to grasp, the exams screwed you over, and the quizzes were no easier than Comp Arch (although Reiss makes them open-note, take-home, and unlimited time, my quiz averages were still a 70, and the class average on the quizzes was a 36%). Test averages were a D on the midterm and a straight up F on the final. The material was really difficult to understand- filesystems, memory buses, virtual memory, etc were so knowledge-based (unlike 2150, where you could get by just knowing the basics and reasoning through the logic of a data structure on your own). This made debugging your homework really f***ing difficult since you have no idea why your kernel was panicking, and the TAs wouldn't know either. Only Reiss could debug it himself, and if you encountered a bug like this the night before it was due, you were screwed. I also absolutely hated the virtual memory calculations (ie, given a memory address 0xFFFFFF, calculate blah blah blah) on the exams- they were pointless to helping me understand the material and I got them wrong ALWAYS anyway.
I spent well over 20 hours a week for this class and still got a crappy grade. The FAT read/write and FTP server homeworks were definitely way beyond 20 hours worth of work each. I struggled so much to learn the material well and keep on top of the homeworks. I felt like I was constantly drowning but never learned to swim, I only learned how to hate water.
If you are a BACS, take this class only if you love the feeling of failure. If you are a BSCS, you're probably already used to failure anyway, good luck and may the curve ever be in your favor.
Let me preface this with the fact that this was Reiss's first semester teaching so a lot of stuff here will likely change in future semesters.
So this class is likely one of if not the hardest classes you will be taking as a BSCS. Imagine combining the work load of 2150 and the material difficulty of 3330 and you have OS in a nutshell. This was one of those classes that I think would've been interesting to take from a higher level perspective but there is just a lot of information to cover from both high/low level and some of it is completely useless. Reiss is definitely a much better professor than Grimshaw and he helps you a lot during OH but personally I stopped going to lecture after the first week because I couldn't keep up with the pace he lectured at and was lost a lot during the first week (which is where he covers all the simple stuff mind you). Not to mention that it was a 9am as well, and reflecting back on it, I think it was a really good choice since his recorded lectures offers the ability to rewind back on concepts you don't understand and saves you an hour that you might've otherwise wasted wondering what the **** was going on during lecture.
With the lecture part out of the way, half the homeworks were brutal and the other half not so much. From personal experience, FAT/Shell took the longest and were really hard. FTP/Paging followed close behind, Life/Lottery were probably the most "Fair" in terms of time put in and the grade you get, and the 1st assignment is more or less a question of whether you paid attention during the first week. The only major gripes I had with the homeworks was that: sometimes he would add too much unnecessary information which clouds the actual objective of what you're supposed to do, he never made it clear that the test cases were just supposed to test major bugs in your code and not 100% ensure that you'd get a 100 on the assignment if everything passed, and grades for checkpoints/final versions of an assignment were released at the same time. For example, he released the checkpoint and the finished grade at the same time and people who did poorly on the latter could've easily gotten back A LOT of points if he released the checkpoint grades showcasing the fact that a part of their code was fundamentally flawed. But anyways, I can't argue that all these assignments were a complete waste of time because a few of them were actually very interesting to go through (Life/Lottery/Shell). P.S. Piazza is a game changer for some of these so make sure you frequently go on it.
No one does the quizzes. Yes, even I was super surprised at this considering it's 10% of your grade. The average person had a 30% on the quizzes this semester so it just goes to show little people care about the content, but personally if you put in like 30 mins to an hour worth of work into doing these quizzes then getting a 70% average is pretty doable.
Exams are brutal. Dread it. Run from it. Destiny still arrives all the same. Reiss basically takes his infinity gauntlet and snaps half the people's exam scores into existence. The median was around a D for the midterm and final, and you WILL encounter questions you have no idea how to approach. The longer you study for these exams the more likely you are to calculate what you need to even pass the class.
But at the end of the day, he does apply a curve which is based on how many people are at each grade range, and he adjusts it so the average person pre-curve gets an 80 post curve.
These are the final words I have for this class: Reiss knows his stuff but his pacing isn't worth going to class for, the homeworks aren't perfectly balanced like all things should be, no one does quizzes, and half your class will get their semester GPA wiped out by these exams.
This class was full of material I simply did not care about, and material which I did not think fit together well at all. It was very disjointed and many of the assignments I thought were pointless. If you had Reiss for Comp Arch and need OS for the BSCS req, you may as well take it with him. I was frustrated because the grading guidelines for assignments were not clear (watch out -- he takes points off for memory leaks, and assignments with checkpoints are worth almost twice as much as assignments without checkpoints). Shell, FAT, and FTP are the hardest assignments so you should begin them early. Also, the Paging homework was pretty difficult and I had to sit 1-on-1 with a graduate TA for an hour and a half to be able to finish it because he had no idea what was wrong with my code. Basically, you just need to start the assignments early, to go to a lot of office hours, and to rely heavily on Piazza posts and the TAs to succeed in this course.
Get us started by writing a question!
It looks like you've already submitted a answer for this question! If you'd like, you may edit your original response.
No course sections viewed yet.