Computer Systems Architecture
(Same as Electrical and Computer Engineering M116C.) Lecture, four hours; discussion, two hours; outside study, six hours. Enforced requisites: courses 33, and M51A or Electrical and Computer Engineering M16. Recommended: courses 111, and M152A or Electrical and Computer Engineering M116L. Computer system organization and design, implementation of CPU datapath and control, instruction set design, memory hierarchy (caches, main memory, virtual memory) organization and management, input/output subsystems (bus structures, interrupts, DMA), performance evaluation, pipelined processors. Letter grading.
Review Summary
- Clarity
-
8.3 / 10
- Organization
-
8.3 / 10
- Time
-
5-10 hrs/week
- Overall
-
8.3 / 10
Reviews
Reinman is an amazing professor and I'd definitely recommend taking this class with him. The flipped classroom style does require a bit more work on the students' end (have to watch pre-lecture videos), but I feel it really does work to learn the material better. In addition, having the basic material taught through the videos allowed Reinman to answer more questions and cover more examples during lecture. It also helped a lot for me as someone who struggled to wake up for the 8ams and often missed lecture.
The final for my quarter was made optional due to COVID-19, so I did not take it. Most people did very well on the midterm (average around 95), and I heard the final was substantially more difficult. In addition, the material covered in the latter half of the quarter is more challenging, so definitely make sure you don't fall behind after the midterm. In addition, both exams are open-note and open-book, and you're allowed to use a calculator.
The amount of time required from the homework varies week to week, but I didn't think the assigned homework was ever excessive. We had a total of 7 assignments (due Friday weeks 2-9). The homework is also graded based on participation, so as long as you put in a reasonable amount of effort you should be fine. I thought the homework was useful for the exam.
Overall, a great class that I highly recommend you take with Reinman.
Reinman lectures in a flipped-classroom style, which makes the class feel like more work than many other classes, but I think it does help learn the material better. Most time outside of class is spent on watching the prerecorded lectures. The homework is relatively easy, about one per week and graded only on completion. I read some of the textbook readings, but they aren't that important for the midterm and final. Reinman emphasizes what you need to know for the tests during the live lectures (so don't skip them!)
The midterm and final together make up the majority of your class grade (90%). I felt that Reinman's tests were fair; certainly not as difficult as 111 with Reiher or 131 with Eggert, but they did require studying for (especially if you aren't interested in computer systems architecture). If you don't do very well on tests, Reinman is definitely not the professor you want to take for M151B.
Ultimately, a lot of your experience will be determined by how much interest you have in computer systems architecture. If you liked the content of CS 33 (virtual memory, parallelism, ISAs), and a little bit of M51A (logic gates), then M151B is basically like a second quarter that goes more in-depth. If you hate the material, you probably won't have a good time, but if you like it (or can tolerate it), then Reinman is a good professor to take it with.
Not a great experience. Would recommend the other M151B professors over Reinman.
Overall not a bad class, decently interesting but you need to put in a decent effort to get a decent grade. I would take this class again with Reinman.
Reinman doesn't use the flipped classroom approach anymore and made all the flipped classroom videos optional and additional content for this quarter, opting instead to lecture in a more traditional format. I feel like this made the class a lot more manageable in terms of the workload, but this still isn't a very easy class. The first 5 weeks aren't too bad and focus primarily on calculating CPI and execution time, design tradeoffs, ALU and multiplier designs, and the single cycle datapath. The difficulty of this class really ramps up after the midterm as we talk about pipelining the datapath, caching, virtual memory, and cache coherence. Reinman himself is a pretty good lecturer however which is nice.
The midterm was fair and moderately difficult with an average of about 80%. The final was significantly harder and had an average of about 75%. Reinman said he curved the class, but probably not by a lot since my raw score was 89.25 and I got an A-. The grade distribution this quarter was 29% some kind of A, 37% some kind of B, and 20% some kind of C.
Unfortunately, this class suffers from a lack of practice material and knowing what to expect on the exams. Reinman does examples in class and gives you an idea of what kind of problems he would ask on the exam, but some of the questions on the final I honestly had no idea how to do. For example, there was a question on the final about something called "Snoopy protocol," however Reinman only went over this at a very high level in lecture, it's not in the textbook, and it wasn't on the one sample final he provided either. Also, the homework questions from the textbooks don't reflect the types of questions on the exam whatsoever.
Overall, I enjoyed this class more than I enjoyed CS 33, and the workload was definitely a lot lower than my other classes. But definitely be prepared to study for the exams and make sure you actually know what Reinman lectures about. If you just wanna get this class over with then Reinman is a good choice, but I've heard the ECE offering is easier so keep that in mind too.
I enjoyed this class, and I feel that I learned quite a lot from it.
Pay attention to lecture. That's the most important thing. Reinman's lectures are organized, but they're organized the way he thinks – dive straight into the problem, even if you don't have the context or background. For example, he would start with "how do we reduce the cycles per instruction (CPI) in a computer?" and talk about pipelining and such, *before* explaining what cycles are, how they determine execution time in a computer, etc. If you pay attention to lecture, you will learn everything you need to do well on the HW and exams. He will tell you exactly how to approach problems and exactly what he's looking for. It also helps that he does a lot of sample problems during lecture. It is just hard to understand because he talks about the context later.
However, Reinman's teaching isn't as hands-on as the other instructors. There's a lot of diagrams on the board, and slides, conceptual understanding, and calculations by hand, but no coding, no simulations, no implementing the systems we learn about. Of course, since it's a course about computer hardware, that's hard to do, but I know other professors did at least have simulations projects and such. If you want that kind of experience with this class, wait for another quarter.
Displaying all 6 reviews
Course
Grading Information
-
No group projects
-
Attendance not required
-
1 midterm
-
Finals week final
-
67% recommend the textbook
Previous Grades
Grade distributions not available.