Your feedback has been sent to our team.
32 Ratings
Hours/Week
No grades found
— Students
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.
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
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.
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.
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.
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.