Your feedback has been sent to our team.
16 Ratings
Hours/Week
No grades found
— Students
Sections 6
#tCFF23 This course has generally tough material and the professor does his best to cover everything in depth but falling behind will hurt you a lot. The lectures are recorded but going to lectures is what helped me the most. Some topics are covered over 2-3 lectures and rely on you understanding what's going on from lecture 1. I took CSO1 the semester before this and it made reading C and assembly much more familiar than if I took a semester off.
The homeworks are tough and take lots of time but do have an autograder for most of them. The quizzes are not so straight forward either but had a comment section on each question where you could explain your reasoning and maybe get some partial credit based on the assumptions you made to answer the question. The labs were all doable but looking over them early definitely helps as many of the TAs during my section had different labs for their version of CSO2 and were a little confused when trying to help me.
The final was weighted 15% so it wasn't an absolute grade killer but it is definitely a differentiator of at least one letter grade for many students.
TL;DR I took this course alongside DSA2 and SDE and managed to end with an A-. It is doable, and if you keep up with class and rewatch videos/take good notes, you should be able to do decent throughout.
The grade is made up of:
- 30% quizzes, which are weekly and usually made up of 5-8 questions which require technical knowledge usually given some hypothetical scenario, such as asking to translate a virtual address through a 3-level page table given some relevant info.
- 15% labs, which are also weekly and sometimes you don't even have to go in person for.
- 40% homeworks, which are every 1-2 weeks. Some of them are pretty hard (such as the game of life one near the end) and you definitely need to have a strong understanding of the content to keep up.
- 15% the final exam. This was definitely the hardest final I have taken so far (as a BSCS); it was long AF and required so much in depth knowledge that even though I started preparing two weeks in advance, I wasn't able to do my best. I think my biggest recommendation would be to never submit homeworks late and try your best to get 100s on all the homeworks and labs (quizzes are a bit harder) in order to "pad" your grade to withstand a bad grade on this, since 15% isn't much at all.
For me personally, what worked best was going to each class, taking pretty detailed notes and if I didn't understand something fully, rewatching the recorded lectures on my own time to make sure I understood examples etc. I would highly recommend trying to start all assignments as early as possible and trying to go to office hours, since struggling through homeworks alone was a pain. It is true that Prof. Reiss is hard to understand pretty much all the time but honestly, you get used to it and he is a really good professor. It is clear that he is an expert in his field from how confidently he tackles questions and how he is able to explain topics that I would have been lost on if I tried to self-teach (like cache policies and address translation). If you don't get something, don't be afraid to ask questions or go to his office hours because he is understanding and tries his best to make sure he has truly answered your question. Overall, I found this class very fun and interesting since I think it's cool to learn about the foundations of computers and stuff like that. Good luck to you all!
P.S. Reiss makes previous years' final exams and quizzes available from the start of the semester - I would highly recommend going through them for practice questions since they represent the difficulty of the final exam well. Also, the readings on the course website are sometimes really helpful with labs and homeworks b/c of the code snippets provided (like on signals).
#tCFS24
Probably the hardest CS class.
Homeworks and labs are free grades. Homeworks are fairly difficult so you have to go to OH or work together to figure it out. Quizzes are really hit or miss and are difficult a lot of times. Final was hard, but I didn't study and got 50%.
I would say that an A is nearly impossible if you don't work with other people. Most people are able to get B- with decent effort. Not gonna lie, but 90% of the time I have no idea what he's talking about.
Reiss is quite passionate about the course and isn't a bad lecturer at all. He spends a lot of class time answering questions, which I didn't mind personally because a lot of the content I ended up learning/mastering on my own time anyways. Homeworks are the most important part of your grade (similar to CSO1), so complete those early on. As long as you show up in-person to labs, they shouldn't be too bad to complete and you can often get checked off for effort. Other than that, weekly quizzes account for a portion of your grade. I actually enjoyed parts of the course material quite a bit after I was able to understand the concepts, but since it didn't come intuitively for me I had to put a lot more effort in to get there. Reiss offers a lot of support himself and there are a lot of TAs as well. But this class was still one of the hardest I've taken at UVA. By no means did I get a good grade in this class, but I didn't expect to either. I'm just happy I passed. #tCFS24
I have mixed feelings about this class. Mostly negative ones about the class itself, even though I do somewhat like the material. To try and make this as helpful as possible, I'll give some context: I took this class alongside a couple other core CS major classes (DSA2 and SDE), a part time job, and a couple high-commitment extracurriculars. So, right out of the gate, not the greatest idea for a notoriously difficult class, and definitely would not recommend it if you can help it. But of the classes I was taking this semester, this was by far the worst, even though I think, grade-wise, I may have done better in here than some other classes.
To begin with my probably smallest but most persistent nitpick, the formatting of the slides is consistently awful. I genuinely wish I could link you one of the slideshows here, but they've somehow hit both being messy and monotonous to the point it takes me more time to parse them than it does to comprehend the actual material on them. If you have a friend who you know has taken the class, please get them to show a slideshow to you, you'll see what I mean.
The reading's aren't much better. I sat with a friend for a full day, focused entirely on CSO2, going through the readings together. They're full of broken links and typos, and half the time I ended up just googling a concept (looking at you, Spectre attacks and context switches) because the reading wasn't clear enough. And I'm sure Charles Reiss is a great and kind person, who works hard at his job and does his best to teach a difficult series of topics in the short amount of time he's given, but he is not a good lecturer. He spends a lot of his time on tangents or recapping content from last class, or going over anonymous feedback by essentially saying "here's what people said. I'm not gonna do anything about it, but here's it on a slide show and in our lecture time for you", to the point I felt it was genuinely more helpful to just skip class and watch the lecture recording so you can skip over those parts. The wide consensus, at least among classmates I talked to, is that the hands-down best lecture of the semester was the one on deadlocks, which was conducted by a guest speaker.
The TAs were as helpful as they could be, if nothing else. A majority of them did give it their best shot to help me when I came to them with problems I was stuck on for homework or content questions, but it really seemed like they themselves weren't given much guidance. One homework assignment, which was graded manually as an online worksheet instead of a coding assignment with an autograder, I had gone over with multiple TAs who all agreed my logic was sound and my answers looked correct, only to be docked points for choices the TAs agreed I should've made. Other times, I was in office hours for hours, as TAs who had no idea what the problem was with my code had to just wait until I figured it out and give the answers to other people with similar issues.
The setup of this class is weekly quizzes that count for 30% of your overall grade (lowest quiz dropped), homeworks for 40%, labs for 15%, and a final for 15%. The median of the final Fall 2023 was a lovely 56%, so over half the class failed. According to a TA, it looks like this semester is basically the same, with over half the class failing, so this means the instructor saw the discrepancy between the difficulty of content on the final and the amount of content he was able to successfully teach his students, and changed nothing.
As for content, though, this stuff was genuinely pretty interesting to me. I like learning about the software guts of computers, and there's a lot of that here. Once I was able to figure out what was going on in any given unit, it was pretty cool! I really liked the cache homework, once I figured out how to properly test it and what it was looking for, even though it took me long enough to learn that night that Shannon does indeed close at 2AM.
Keeping it honest for all here, I am probably very biased, this class was Not Good for my mental health and I'm just glad to never have to take it again. I got a 82.5 (B-) overall, but genuinely near the end was just aiming for a C- because I did not, under any circumstances, want to be forced to retake this. If you're planning on taking this, either try to aim for a semester where Reiss isn't the instructor, or look into what therapy your insurance covers.
Incredibly challenging course (probably the hardest of the required courses) just due to the amount of content seems way too much for 1 semester, and fact that most of the concepts (low-level processing, os, networks) are things we probably aren't familiar with. The one saving grace is Reiss, he's actually very understanding, super helpful during OH and piazza, and also very lenient on partial credit with regrade requests if you can explain your thinking.
One thing to note is it seems like Reiss basically assumes you understood everything perfectly from CSO1 (C pointers, structs, memory, assembly, etc.) so if there were concepts you never fully understood or just forgot since, make sure to brush up on them or the beginning of the class will be overwhelming.
Because of the weighting of homeworks and open-note quizzes relative to the exam, it's one of those classes where as long as you put in the work, it's fairly easy to pass but really hard to get an A. If you want to get an A I would probably not take this along with any other hard cs classes and make sure to stay on top of understanding concepts as you go (it's super easy to fall behind but if you do you're cooked since the material builds on itself a lot). I ended with an A but probably had to put ~8-12 hours a week outside of lecture into just this class. #tcf24
Professor Reiss is a great guy and he is very understanding of people's situations. The class is also pretty organized, so you have a pretty consistent routine every week. My biggest complaint is the workload. It's not that the material is that hard, but it's just way too time consuming for a single course. It's not his fault; the CS curriculum was just designed this way. I found the material to be explained pretty well, though the quizzes were sometimes challenging. The most challenging part was the final, since there was so much information that had to be remembered. We would move through topics really quickly and kind of just forget about them in a week or two as we started a new one. Overall, not a horrible class but definitely one that will require good time management. I would not recommend taking this course with other hard classes. #tCFF23
Professor Reiss is probably the best CS professor I had in UVA. Yes the course is difficult and I wouldn't say it is well-organized either. However there's nothing wrong with the professor, being very kind, flexible, and well-understanding. Anyone who says the course is hard and maybe somewhat bad, I have no arguments. But If you say the Professor is bad, either A you're not suitable for studying CS, or B you had a bad time tinthe course and just wanted to express your anger.
This class is incredibly difficult, and if possible, I recommend taking it with only easy classes in the rest of your schedule. Reiss is very passionate about the subject, and he is very quick to respond and answer questions. I think that his lectures were difficult to grasp at times, and there were a lot of moments when I left the lecture hall feeling even more confused than when I walked in. Definitely rewatch lectures immediately and go to office hours right away to try and learn the material beyond the surface level understanding. The material is so dense and difficult, but I kinda found it enjoyable in a sadistic way.
Get started on the homework's as soon as possible (whenever they're released). Took this class with DSA2 and I always regretted not starting the homework early because due dates would overlap and I would just get overwhelmed with work. Quizzes were rough at times but get started on them early and you should be fine.
Can't stress the importance of going to OH enough. It's genuinely so important to understand the material and not get behind on lectures/readings. Everything builds upon itself and you could get lost very easily. I recommend brushing up on C before taking this class, as pretty much every homework assignment requires it.
If you genuinely never studied or put in too much effort into CS classes (DSA1, DMT, CSO1, SDE), this is the time to lock in. Studying after class, rewatching lectures, going to OH, praying to God. If you do work hard and do well throughout the semester, you can easily pass and get a good grade even if you bomb the final.
#tCFF23
Professor:
Professor Reiss is very talented and knowledgeable. He is a great resource for any questions related to CSO2 content. He's open to student feedback and willing to adjust accordingly. The structure of this course has changed a lot in the past semesters as he adjusts to past student performance and feedback. For example, from having midterms and a final to just a single final, longer time to complete more difficult homeworks, etc. I feel like people can be overly critical of him, but the constant changing of this course’s structure throughout the semester proves that he actually does listen and cares. Don't hesitate to ask him questions during office hours if you're stuck, even if you might think that your questions are “stupid”, there are no dumb questions.
Course:
This is a difficult class. I highly highly recommend you to find friends in the class who you can study and discuss course contents with.
- Weekly quizzes (30%): I spent a considerable amount of time every week completing the quizzes. Typically, I would rewatch all the lectures related to the quiz topics and use course readings and the internet while working on them.
- Labs (15%): I took advice from past students and always started my labs 1-2 days early and finished before the lab. Because I almost never work on them during lab time, I can’t really say if they are all do-able during lab times, but I would say that most labs are not difficult. However, the difficult ones (signal handling, side channels, etc) can take a while to finish. Please make sure you thoroughly read through the lab write-up before starting, and if you are stuck refer to the lab writing first. The lab writings are surprisingly helpful.
- Weekly homeworks (40%): START EARLY. DO NOT procrastinate. Go to OH if you are stuck. Instead of a week, you will get 2-3 weeks to work on some of the most difficult homework assignments.
- Final (15%)
TA and OH:
This semester (fall 23) professor Reiss is available for OH in Rice 442 on Fridays. He is incredibly helpful. Just like any other CS courses, CSO2 TAs’ skill level varies, but the ones who schedule OH during the same time as professor Reiss on Fridays tend to be more competent and helpful.
Lastly, do not schedule other difficult/time-consuming courses with CSO2. Just don’t. If you invest time and effort into this course, you will do fine, if not good!
#tCFF23
I took this class twice. Just like how my grade will average out between the two semesters, I'll attempt to average my course experience between the two semesters and present it here.
The first thing to know about this class is that, possibly more than CSO1, CSO2 simply has too much material for one semester. We covered the following topics: Makefiles; kernels, exceptions, and signals; virtual memory; process and threads, including process management; caching; networks, cryptography, and a bit of general security/network security; synchronization and multithreading; and realistic processors (pipelines and out-of-order). CSO2 is allegedly a better experience than the old Computer Architecture (3330) and OS (4414), which CSO2 blends. This appears to be true, but it's cold comfort as a student in CSO2 since the class can get very bad very quickly and still can be an awful experience overall.
The class is divided into weekly quizzes, homeworks, and labs. The quizzes require you to deeply understand the material to do well. Start them as early as possible and leave comments by your answers--even if you miss a question, you can still get partial credit back if a question is ambiguous and a lot of people miss it.
The homeworks range from okay (the warmup assignment and timing assignment) to extremely difficult, nightmarish experiences (pagetables, life). The hardest homeworks for me were the pagetable assignment (which has checkpoints, but which you should try to fully complete as soon as you can to leave time for debugging); the TLB assignment (LRU management can get really tricky very quickly and requires lots of testing); and the life homework (you really need to understand what you're doing; once you do this, the code shouldn't be "that bad" relatively speaking). Like with quizzes, start these early, go to office hours as needed, and write lots of tests (testing code on the writeups were helpful, and if your code passed these, there were generally no surprises; sometimes you might have to write your own tests, which are best done as assert statements). The pipeline and out-of-order homeworks will have you very lost if you do not go to lecture or watch the recordings, but are pretty straightforward if you understand the lecture slides.
Labs were generally okay, though there could sometimes be a conspicuous lack of what exactly you were being asked to do. The signals lab and side-channel lab can be very tricky. I absolutely hated the networking lab both times I took the class; it exemplified the worst parts of not knowing what you needed to do, and since you're building on a custom library (it's not open-source), it can be tough to know what the lab starter code expects short of reverse-engineering the code for yourself.
For better and for worse (in many cases, for worse), CSO2 immediately expects you to have an intermediate-to-advanced skill level with a Linux environment, manual pages, and C (pointers especially). CSO1 is "supposed" to leave you with these things once you take the class; more commonly, most of the other topics in CSO1 (number systems, the simple CPU, toy ISA, assembly, C basics) crowd out the Linux topics entirely and limit discussion of more complicated C/man pages until the very end of the semester. There will almost certainly be a conspicuous jump between what you *actually* learn in CSO1 and what you're *expected* to have learned in CSO1 when you start CSO2. It's extremely frustrating, but know it's not you--it's the classes.
Prof. Reiss is an incredibly talented professor and is excellent at handling questions. He has never made me feel stupid for asking one, even when my mind has blanked and I've had to ask some very basic questions before. I also sympathize with other reviews which mention how he can underestimate CSO2's difficulty rather offhandedly. Again, while I think it's true that comp arch and OS, both of which Reiss has taught, are harder, those classes are so hard that anything looks "easier" by comparison even if it isn't easy objectively. If OS seemed to be a 10/10 on the difficulty scale and comp arch between a 9/10-10/10 on the difficulty scale, CSO2 is easily an 8/10 and possibly a 9/10. Based on personal preference, CSO2 might be the hardest class in the entire major.
Don't take this class with anything else hard. The first time I took it was with two other hard ECE classes, and I got absolutely destroyed. Don't take CSO2 with the ECE core (circuits, electronics, signals/systems), don't take CSO2 with embedded systems, and don't take CSO2 with DSA2. Make CSO2 your hardest class of the semester so that things can balance out. If CSO2 gets you down, know that you're not alone.
This class makes you better, period. However, it definitely felt better than the previous class, CS 2130, in terms of consistency of coursework and applicability of information. Learning about the kernel, networks, cache, etc. has definitely rethink my approach to computer science as a whole. Paying attention in lecture and/or lecture recordings as well as the readings is very important, and starting assignments early and taking advantage of office hours will put you ahead. When taking this class, take it with at most one other hard class.
This class has a reputation of being very difficult, but when taken seriously and putting in a decent amount of effort, anyone who passed CSO 1 can definitely do great in CSO 2.
I really wanted to like Professor Reiss, I did. But man, he is such a lousy professor. He's a great and timely communicator, he listens to his students, and devotes plenty of class time to answering questions, but the one thing he seems to just be really bad at is teaching. I read all of the provided readings before class and take detailed notes on them, only to walk out more confused than when I walked in every time. Again, Reiss is really good at certain things; he responds to emails almost immediately, he makes sure to answer people's questions during lecture, but man those lectures are TERRIBLE. This course is already so abstract and he somehow makes it even harder to understand. The quizzes, at least the first few, were extremely confusing, the labs take WAYYY longer than 1 hour and 15 minutes, don't even get me started on the impossible homeworks, and the worst part is, he doesn't even teach you anything close to what you're expected to know for them! And sure, I've had classes that require you to work hard outside of class to understand abstract material, but the TAs are potentially the least helpful I've ever encountered. Even during lab, they seem to have no idea what the assignment is about and spend 5 minutes looking at your code just to go "i don't know, sorry." This class is so disorganized, and Reiss does seem to acknowledge that, but does nothing about it. He starts off every class with anonymous feedback submitted through Canvas, half of which are rants about how awful of a teacher he is, which he then just deflects and says "I don't think it's that hard."
On a positive note, he's gotten better throughout this semester, and I hope next semester he can take these criticisms and make the class better. The quizzes are a bit easier and so are the labs since the beginning of the semester, but man, if there is a different option for the professor of this course, take them. Do not take Reiss.
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.