Your feedback has been sent to our team.
32 Ratings
Hours/Week
No grades found
— Students
Sections 7
This class will throw you into the deep end—an ocean of bits, bytes, hexadecimal, and machine code that makes you feel as if you’re constantly on the verge of drowning. Then, just when you think you can’t take any more, you wash up on the shore of Assembly and C, saved from what feels like certain defeat.
It will test you and push you to your wit’s end. If you can maintain your sanity, though, it can be incredibly rewarding and transformative in the way you view both hardware and software. I managed to earn an A, but I won’t lie—it was an up-and-down battle all year.
Graham is excellent and very lenient with homework and test grading (the first exam had a 23% curve). The homework assignments are extremely challenging and count for a large portion of your grade, so make sure you start them well in advance.
Overall, I highly recommend this class to anyone who truly wants to learn a vast amount—from low-level binary all the way to WebSockets and everything in between.
This class is extremely difficult. It is very different from the previous programming courses in that it is very hardware-heavy, with circuits and file management programs. The lectures move very fast and build upon themselves, so it's important to keep up with the content. The slides, as well as recordings from past years, are posted on Canvas to reference. The readings on the class website are also pretty helpful. The homeworks aren't terribly difficult, with the potential exception of the escape room assignment. The labs are also not hard and are flexible. Attendance of lab is mandatory, but you have a week to submit the assignment to GradeScope. As for Professor Graham, he is very knowledgeable of the subject matter and is very good as answering questions about the content. He can be slightly crazy at times but he really is very sweet and kind. The tests were pretty difficult, but they offer pretty generous partial credit. https://researcher111.github.io/uva-cso1-F23-DG/ Here is the course website for reference.
Prof. Graham is a nice guy, but as a lecturer, I felt the need to rewatch them and Google for clarification to understand all the concepts. However, he was really generous with extra credit opportunities. We had the ability to get up to 14% extra credit! I would highly recommend going for the extra credit opportunities, as they helped a lot.
The labs were usually fine, and you could complete them ahead of time and get them checked off before your lab session. The HWs were all really interesting and helped a ton with understanding the content, but I did find the first (Bit Fiddling) and last (Code Generator) ones to be much more challenging than the others. For Spring 24, The tests were definitely a huge improvement from previous semesters, as they had much less convoluted questions (for the sake of being hard) and an emphasis on more straightforward clear questions.
Overall, this class is a lot of work, and for those interested in understanding low-level processes and hardware design, this is a very interesting class.
Ended up with an A- on the border of an A. The tests are difficult and this semester was an entire whirlwind but there were extra credit opportunities and tho Daniel didn't like our class, I think he was for the most part understanding and receptive to student and TA feedback. Topics honestly aren't that difficult, just make sure you have a network to collab on homeworks and labs which will really help, start everything early, take every extra credit chance (it probably will matter) and if you don't understand a topic, go get someone to explain it to you/it may make sense later.(Free tutoring) In my opinion, more difficult than DSA1 but not impossible or as hard as its reputation is, but then again keep the low averages in mind. The class starts hard (if you aren't prepared for circuits and binary), get easier, then gets harder (if you don't like C) or starts easy and gets hard/vice versa. #tCFF23
I'd like to preface this by saying that I took this class as a first year in my first semester so I was completely unpreprared for the difference in difficulty between highschool and college. That being said, I think this class is also just way harder in general. I took 4 classes this semester, and this class easily took up about 80% of all my time. There were days where I did homework from 2 PM to 5 AM the following day.
Thankfully, this class is saved by the fact that homework and labs make up a majority of the class, and the professor allows you to use ChatGPT so it's maneagable. However, the exams were a completely different story. You could study all you want and professor Graham will just test you on the most outlandish nuances ever, and he might've mentioned it in only one class.
I ended with an A in this class, but that's because my other 3 classes were very easy so I was able to focus very hard on this class. If you're taking this alongside other hard classes, it's going to be hard to manage your time.
I think Graham is a good person overall and he just wants the best for his students, and when it comes to live coding, the lectures are very helpful. When he started doing live coding, I learned a lot. Unfortunately though, he tends to just do powerpoint lectures instead. He's a good person and a decent profesor, but his lectures unfortunately don't help much with exams and homework sometimes, and I found myself doing a lot of independent research and studying just to understand what we were doing.
I want to start by saying that Daniel, outside of his teaching role, seems pretty knowledgeable. But when it comes to teaching, there are a few major issues I need to talk about.
First, there was a lot of unhappiness with Exam 1. Daniel did say sorry and took out some questions, but even then, most students scored around or below 70%. This makes me think the exam didn't really match what we learned in class.
Then, with Exam 2, things got more complicated. Along with a similar very low average, some students' exams got lost, and they were given a choice: either do an oral exam with a set minimum score or get an extra 10-15% on their final grade. This doesn't seem fair or consistent to me.
The final exam had its own problems. Students who said they were sick could take it online, with no real checks, which makes me question if everyone was honest.
All these issues make me feel that Professor Graham isn't meeting the standards of a great teacher. His methods in managing exams and grading aren't consistent or fair, and this could hurt the quality of our education. It's clear we need a better and more professional way of handling our curriculum and assessments.
$tCFF23
To be honest, I think this was both one of the most challenging and rewarding courses I have taken at UVA. There were genuinely times where the work in the class seemed excessive and made me want to blow my brains out, but after learning it, I feel that I have gained such a deeper level of understanding in the class, and am glad that I went through the struggle. To start, I can easily say that this is not an easy class. There is a lot of content in this class, and 1. if you fall behind you are screwed, and 2. if you don't get something, you better either learn it quick or you're screwed, and 3. prepare to spend a lot of time doing homework.
It's no joke when people say this course is hard, but I genuinely believe that professor Graham did an amazing job at teaching this course. For lectures, tbh I don't recommend them as the course is recorded, and it is so much easier to learn through the recordings, as you can back track and whatnot. Graham does a great job at teaching the content, but he does go by things quick, making it hard to pay attention in lecture. Take advantage of office hours and lab time, especially for homework assignments.
Genuinely, the worst part about this class has to be the homeworks. Most homeworks took a long time to do (probably like 30 mins if you know what you are doing, 2-3 hrs minimum if you need to learn ig), but all of them except for one feel like they have a purpose. The only one that felt like a waste of time was called escape room, and it's actually the dumbest assignment in the class that they should either shorten a lot or remove. Highly recommend you go to office hours to ask for help on it.
Overall, I genuinely think this course is one of the most rewarding classes you can take. By no means is it easy, and if you think it is anything like your other CS classes, you're in for a huge awakening, but after you finish it, hopefully you will gain a deeper gratitude for the subject.
01001110 01100101 01110110 01100101 01110010 00100000 01100101 01110110 01100101 01110010 00100000 01101000 01100001 01110110 01100101 00100000 01001001 00100000 01100010 01100101 01100101 01101110 00100000 01101101 01101111 01110010 01100101 00100000 01101101 01101001 01110011 01100101 01110010 01100001 01100010 01101100 01100101 00100000 01101001 01101110 00100000 01100001 00100000 01100011 01101100 01100001 01110011 01110011 00100000 01101001 01101110 00100000 01101101 01111001 00100000 01101100 01101001 01100110 01100101 00101110 00100000
professor graham is a nice guy, but he's definitely not the best at giving lectures. a lot of his lecture slides are filled with typos that make it really hard to actually like. use as valid study material which is pretty upsetting. he'll make changes to the slides throughout class as he starts noticing the errors/other people pointing it out, but he won't update the slides on the schedule most of the time so make sure you adjust your notes in class. sometimes he'll spend more time talking about an adjacent topic that doesn't really matter for the class which wastes time, even if the topic is interesting. also, a big problem is that he makes lots of mistakes when doing live coding sessions and often finds bugs that take him a good portion of the class to fix, even if it is simple. when i went to him for OH, he is unable to effectively find the problem i am having with my code. again, he's a really nice guy and passionate about helping people learn cs, but he makes tons of mistakes which makes it difficult to learn. the exams, specifically the first one, were also quite interesting. T_T
Honestly, Graham isn't a bad professor nor is he a bad teacher. He is a very nice person and always willing to help any student. He also makes some interesting jokes in class, which hit ("villain arc"). I can tell that Graham has listened to his TAs and taken student feedback, and the course has improved since fall 2023.
But, the course is still difficult and the exams, are still pretty hard generally speaking. The HWs are all doable, but HWs 1 (bit fiddling), HWs 3-4 (modulo and GCD binary coding), and HW 9 (code compiling thing, which was an entirely new HW this semester) were the most challenging and longest. The other HWs were much more doable and better. The labs were mostly doable, except for some labs which were quite long. You should be able to get high grades on the HWs and labs (just showing up and submitting something in lab is 80% minimum). As for the exams, utilize every study method possible to understand the content and DO THE PREVIOUS TESTS (on the course site). Then, just pray that your exam score is good enough.
These reviews are too harsh on Graham. The course content is difficult. There's no denying that. ESPECIALLY if you are not familar with computer architecture and low level programming. I took this class alongside DSA and other math classes and ended with an A. It was hard but not impossible. What I realized after the semester is that the course is structured beautifully. You start off with very low level content (electricity/transistors, gates, circuits, etc.) and work your way up to number representation and computer architecture. Yes, Graham makes mistakes, but again, the content is difficult and confusing. Be prepared to put a lot of time into understanding small things. Also build a friend group within the class. You later work your way to assembly and C. In my opinion, assembly wasn't bad. It was taught well and you get good practice with it. C is where its hard. be ready and work hard. The labs and homeworks are difficult. Be prepared to dedicate hours to each one. Do the labs with friends. You are supposed to work together. Go to office hours for homework. Make the class easier for yourself. Overall, the class was really interesting and and some points (not all), it was enjoyable. That being said I would NOT take it again and am not looking forward to CSO2.
Graham gets a lot of hate from other students, but I feel like its undeserved. CSO has a steep learning curve, and if you aren't already knowledgeable in computer science concepts (like Linux, C, Java, binary, etc), its extremely hard to follow along. This isn't his fault at all! He's such a great teacher and simplifies topics for better understanding. The guy literally invented his own language to make learning x86 easier. He's extremely dedicated. The only issue I had with him was that his tests were pretty hard. After spending 3 days straight studying, I averaged an 85% on his tests, which is pretty good considering that the test averages were 80% and 70%. He does offer extra credit opportunities but doesn't make it easy to earn them. You definitely have to put in the work.
That being said, he really is a genius teacher. His lectures are extremely organized and well structured. Although it may seem confusing, if you go back and watch his lectures, he thoroughly explains a lot.
Tl;dr constantly ask questions, constantly go to office hours
As someone who took the class in Fall 2023, had to drop it for my own sake after the first exam, and retook it in Spring 2024, Professor Graham (while still not perfect) has taken feedback to heart and improved this class. Graham still goes through slides quickly sometimes, but he is willing to stop if needed and assist with understanding during office hours. There was a noticeable amount of typos that added to the confusion, but he and the TAs are really helpful on Piazza when it comes to correcting any misunderstanding.
Most of my problems are with the content itself since it's just difficult and nothing can be done about that. Thankfully, TA office hours helped a lot in understanding, and I especially recommend going in person for homework help if you can.
The exams also underwent a major shift, as they are all mostly multiple choice aside from a few short answer questions, a far cry from the difficulty of exams pre-2024. You can check this link (https://researcher111.github.io/uva-cso1-F23-DG/exam_review.html) to see for yourself, and all of the course content is elsewhere on the website if you want an idea of what it's like.
#tCFS24
This was the least enjoyable class I have taken here at UVA. The material was unnecessarily hard and I found myself constantly stressed out about homeworks which took hours. The first test was nothing like the practice test which was given in previous semesters. It was the professor's first semester teaching this class. But after the first exam, I am glad that he took into his student's opinions into account and adjusted the test structure.
#tCFS24
Worst class I've ever taken at UVA. So incredibly unorganized with HORRIBLE instruction. Professor Graham quit teaching halfway through the semester and would consistently get frustrated and end class early. Class instruction was incredibly inconsistent. Sometimes there would be powerpoints, sometimes he would use the white board, sometimes it would be handouts which made it so hard to stay organized. Yes, this is a hard class, so if you can take it with anyone else, save yourself the trouble and do it.
pretty bad as you may have heard. the course content in itself is pretty difficult to understand and graham didn't make it any better. i was in the section where he made an inexplicably hard first exam and then everyone berated him for it and he ended up curving the test and apologizing in class (i felt bad). doesn't mean he made any of the following tests any easier. still pretty difficult. if you try and understand the concept a bit you can probably land solid 80s on the tests. get solid grades on the homework and you can still end up with a pretty decent grade even after not doing the best on exams.
That first test was insane, I was gagged when I saw the number of questions we had to do in 50 minutes! The homework and labs were difficult but doable with the help of office hours (YOU HAVE TO GO). He definitely learned from the first test bc the second one was much better and the final was a breeze. Definitely rewatch the lectures to study and hopefully he changed that first exam because no amount of studying is getting you through that m8. He is very kind and attempts to help us so I commend him for that.
Although the semester started out rough, he is a genuine guy and truly wanted to make the course better (which he did). I mean looking at the grade distribution a lot more people got out with A's than people made it seem. He's a decent lecturer but does make quite a few mistakes on the slides so I would definitely recommend going to class or watching the recordings. Overall this class isn't hard as long as you take notes and good notes. The labs and homeworks are easily doable so long as you take good notes on the lectures.
A lot of people complain about Graham, but I attended lectures most of the time and thought he was a decent lecturer. He definitely has his quirks, but he seems genuine and did make attempts to improve the course/exams from student feedback. For me, the first half of the semester was definitely way easier- I enjoyed the content more and found the HW to be more fun (despite a slight learning curve). Content picks up after the first exam. Just be sure to go to all the labs and start the homework early, since they account for a big chunk of your grade. I was able to ask for extensions a lot since they're pretty lenient with that. #tCFF23
Firstly, Prof. Graham isn't as bad as people make him out to be. While obviously being a "nice prof" doesn't make up for a bad course experience, he (a) worked quite hard and (b) truly did listen to student feedback after exams and significantly improved the course as it went on. With that being said:
I viewed this class as the first class that really tests whether you "want it" or not. While it's not as difficult as other CS classes, its the first one that i would argue is a "CS weed-out" and, naturally, that makes the course difficult. It is broken down with three midterms, labs (70% of the grade is showing up, 30% is getting the lab correct), and homework (almost all auto-graded homeworks). The material is all on the website (just google "CS 2130 UVA" and you'll find it), but it covers everything from Os and 1s to the C programming language.
The main gripes people had with this course was through the first two midterms. This is mostly because a lot of the topics are incredibly low-level and sometimes difficult to follow, but also with some inconsistencies/incorrect information on slides/lectures (which he fixed moving forward). However, the first midterm was quite difficult, and even though he did round to an avg. of 75, it was still surprisingly difficult. On the 2nd midterm and final he listened to feedback and gave study guides and lots of resources/help to have students prepare for "his type of exam," and made them more fair.
If you want to succeed in his class, i'd unfortunately say that it is just simply a function of time that you put in PRACTICING. Reading lectures & memorization can only get you so far, so just practicing and putting lots of time into having a thorough understanding of the fundamental principles he's teaching (working all the way from 0s and 1s to C) will benefit you the most.
Professor Graham isn't a bad person, but he often did sth very weird to understand. Like deactivating piazza immediately after final exam before final grade come out. Students don't have a platform to discuss about grading issues. idk why preventing students discussing about final grades or any potential grading issue. It is a 4-credit hard CS course involving about 1000 students so I guess prudence is a virtue.
I can see Graham is passionate about what he teach but the workload is really really high. And most stuff is just "good to know". This class covers from circuit up to socket, so you can expect the difficulty and work load to be really high. It isn't really Professor Graham's fault but be aware of the load. Like we even have lab and HW due around the cumulative final exam date (+-2days), it makes me wonder is that HW or knowledge that important? And we can't drop even one HW from 12 of them.
Other than that, Graham is a nice person: he would shake hand with you and chat with you. He also tried to curve the exam.
I guess the problem is really with this class but not with Graham himself.
Find some friends in this class early on you can consistently study with. The material is difficult but is absolutely doable to get through. The homeworks are pretty hard (especially the escape room one) so start early. The office hour queue is usually a couple of hours long so I can't recommend office hours as a particularly useful resource. Because the nature of this class builds up from the transistor all the way up to sockets in C, make sure you get help as soon as you don't understand something. Professor Graham sometimes blitzes through slides that *he* thinks everyone should understand right away, so engaging in class and asking questions is the best way to keep pace (he will slow down/go back if he realizes people are confused).
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.