Your feedback has been sent to our team.
3 Ratings
Hours/Week
No grades found
— Students
Best class I have taken at UVA so far. This class basically teaches you how a computer works from a transistor level through logic gates, processor architecture, machine code, assembly, and C. While the content can be difficult to wrap your head around and it moves quickly, especially at the start, if you put in the work you will be rewarded with a much deeper understanding of how computers actually work. We had a homework assignment about every week, and these were typically pretty difficult, though the longest I spent was probably 12 hours and they typically took 6-8. They never felt like busywork, though, and were always very rewarding once you got it. The assignment format was pretty varied, ranging from drawing circuits by hand to writing machine code in binary by hand to writing x86-64 assembler and C.
Exams were easier than the practice ones we were given and were typically not too difficult if you studied.
Professor Tychonievich is the most wildly competent person I've ever met. He had an instant answer to 99% of questions students asked, even when they were straying outside of what we were being taught, and his explanations were always good. I think I only heard him be unsure of an answer to a question once, and he clearly has deep knowledge of the field. His lectures could move fast, but he always answered every question. If you're confused, speak up and you will get clarification. He is going to UIUC next year, though, so you unfortunately won't be able to take the class with him.
I highly recommend this class, even if you aren't majoring or minoring in CS. It teaches you an insane amount and gives you a good appreciation of how computers really work. It is harder than Introduction to Programming (CS 1110) by far, and is also more difficult than Data Structures and Algorithms 1 (CS 2100), but is seriously worth it.
Agree with the other review. I do have some critiques about the course. Many student TAs are not nice and will actively be rude to students (I am talking about you Lukas). Some assignments were so difficult I could not have gotten the answer even if I spent a million years on it (i.e. bit fiddling). The course required a lot of working together with other students. The exams and quizzes were reasonable. For me personally it was really hard for me to follow along in lecture because there were no slides and Tycho would just write on the screen. He is extremely smart and good at his job but does go fast paced. Unfortunately is a requirement but one should not take this course for fun. You are in for a lot of crying
This class was pretty challenging, especially in the first couple of weeks. The first third of the course is the most confusing. The class goes over how computer hardware works, and it's pretty confusing. The rest of the course is much more straightforward, with most of the time spent going over x86 assembly and C. The weekly quizzes can be pretty challenging, but they're open note so it isn't too bad. The exams are much more straightforward. The labs and assignments can be confusing sometimes, but help a lot with the core concepts of the class. I thought everything we learned in this class was very interesting. If you don't have a strong background or interest in CS, though, it'd be wise to skip this class.
Also, as an aside: the TA's for this class were very hit or miss. A lot of the TAs were nice and chill. From my experience, though, the TAs struggled to fix a lot of the problems with people's code. On a few occasions, the TAs were actively rude and unhelpful. If you take this class, maybe be prepared to do most of the work on your own.
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.