The lectures were informative but they sometimes contained too much information that simply could not be digested in a 90 minute lecture (for example the lectures on DRAMs, out of order processing were discussed in great detail but required knowledge and hands-on experience, like VLSI, that was far beyond the scope of the class). There was too much breath and not enough depth in the class. For example, pipelining was discussed in class but there were no real, hands-on, "get your hands dirty" coding, simulation or hardware exercises to implement the idea. This can lead to confusion because as the semester goes by, the student sees more and more jargon/words without having had properly assimilated the information. But perhaps this is just representative of many classes at Columbia due to the lack of time and weariness students feel as the semester goes by. Some of the homework questions were based on optimizing code or running simulations of hardware, which is alright. But no circuit simulations. So more of a CS class than an EE class. Midterm was take-home and you had to skype the professor to discuss ideas. No practice final. So only lecture notes to go back on. Pretty difficult final because a lot of the material wasn't properly integrated into the homeworks/paper reading and the huge breath of the lectures did not properly prepare for the depth of the final. This class requires a lot more studying than it seems!
I would not recommend this professor or course. A brief summary of two takeaways: 1. The course is artificially difficult exacting rote memorization of content delivered verbally rather than quantitative skills or abstract thought. 2. Timely feedback was not provided, grading seemed arbitrary and contradicted the syllabus. Sethumadhavan is knowledgable and encourages discussion during class. He waits for students to think through the examples he gives, entertains follow up questions and does not rush through the material. The midterm was challenging and a good opportunity to apply cache optimization techniques to a benchmark of scientific software. Sethumadhavan verbally delivered the majority of the content for the course. During this time he drew hundreds of rectangles on the blackboard to illustrate the interaction of different computer hardware components. This often seemed frivolous and distracting. Lectures were sometimes obfuscated by sloppy or incomplete handwriting. Slides might help to organize and deliver important concepts clearly and concisely. Grading seemed arbitrary and feedback was delivered late, if at all. No comments were provided on the implementation section of the midterm and the grade was returned the day before the final. After the course finished in May, the homework was decreased by 10% of the total grade and the midterm was increased by 10% of the total grade contradicting what was stated on the syllabus and on Canvas throughout the semester. CS is a broad field. Some courses may be challenging due to inherently abstract or mathematical content. This is not the case with computer architecture. If you study computer systems or are an aspiring computer architect you may enjoy certain aspects of the class; others may feel that the difficulty is contrived and the course lacks substance.
This is one of those classes that every systems programmer should take, even if they will never design a chip in their life. You will lean so much about what actually goes on in a modern CPU -- much of which is not very well documented by online resources. It's essential for anyone who wants to write fast code -- for example, if you plan to work on operating systems, libraries, or high-frequency trading. I learned a lot from the lectures, despite being scheduled Thursday 7 - 9:30 PM when everyone is exhausted. Prof. Sethumadhavan was a great lecturer for the first half of the semester, but then he stopped making jokes (probably because he was tired like the rest of us - but jokes help us stay awake). There are definitely some lectures that were extremely dry even though they could've been interesting. Also, his explanations are unclear (self-contradictory) sometimes on complex things, like how to access a DIMM. The most helpful part of the course was taking with Prof. Sethumadhavan during halftime and at the end of class. He is really great at explaining stuff in small groups and genuinely takes pleasure in hearing interesting questions from students. Wish I had attended office hours more. The problems from the book truly horrifying - they are filled with ambiguities and errors - but my understanding is that there are not that many textbooks about computer architecture. Maybe there are some non-textbooks that we could integrate into the course. However, I really enjoyed the group homeworks where we had to argue about how to interpret computer architecture papers and write programs to demonstrate concepts from class. The midterm was in the same vein - come up with some optimizations and then implement them - so I also enjoyed it a lot. Sometimes the assignments were poorly worded or had bugs. For example, the hw3 skeleton code did not properly check whether the optimization changed the program's output, despite several corrections by the TAs over two weeks. This did not affect our group because we figured it out, but had we not been so careful, we could've wasted a lot of time and had nothing to show for it. I understand that TAs are busy, but correctness is also important.
Great lectures, Prof S is explains things well and knows his stuff. Would be even better if he made slides for all lectures and posted them. Very poor logistics and not enough TAs - grades took forever to get back, room overcrowded in 1st half of semester, not much help on Piazza, etc. Early HWs did not really relate to the test much and were long, later HWs were more reasonable. Far too much reading was assigned, but you didn't really need to do it all anyway. Doesn't let non CVN students view the lecture videos online which is unfortunate. Hopefully he'll keep teaching the class, and improve on the TA and logistics in future semesters because the core of the class - his lecture ability - is solid.
Spring 2014 is the first time Simha has taught Computer Architecture. He didn't have a lot of slides, and used the blackboard for a majority of the course. Nevertheless, he is a good teacher: he takes times to explain concepts clearly, and actively takes questions. However, he doesn't employ nearly enough TAs, due to which assignments and exams are returned horribly late. Moreover, half the assignment just lists textbook exercises -- and the exercises in the Hennessy & Patterson are really ambiguous and poorly designed. The other half is a group portion that involves either reading papers or running simulations, which is not bad. The exams are very sensible and test exactly what Simha taught in class. Overall, I enjoyed the course and learnt quite a lot.
Professor Carloni is a very nice, approachable and friendly person BUT, he sucks at teaching. Computer architecture is a basic course and he failed to teach it effectively. Most horrible thing is, it's too hard to understand his weird accent. At the beginning of the course, I thought that it's my problem that I don't understand his lecture clearly but eventually I came across many students who struggled to decode what he says in the class. I will give him an A+ for his friendly and welcoming behavior but unfortunately he fails to be a good teacher. The good news is, if you work hard then you can manage to get good grade. The TAs were awesome during my time. If you have Marcin as a TA, then make the best use of him. He is good at explaining the concepts. Another bad part of this course is, Carloni starts talking about advanced topics during the second half of the course and he terribly fails to explain the intricacies of his lecture slides. He also assigns a lot of research papers for reading but eventually he doesn't give any questions in the exam from those topics. So, it's not a big deal. If you work a bit hard, then you can manage to get a good grade and will have a good idea about basic computer architecture. However, you will feel that the you could do much better if you had a good professor!
This is an excellent basic architecture course where you become familiar with all the architectural aspects of modern computers, which any CS student should be familiar with. By taking this course you will gain some understanding of what the difference is between newer and older processes, why various cache organizations have various advantages, why memory performance is so ever important and you'll get a hint of issues and challenges related to SMP. Besides just learning the material and getting familiar with terminology you will get an idea of how to evaluate performance of different architectures. The instructor is very dedicated and approachable and does his best to keep you involved when going through the some 50 slides for each lecture. The number of slides sounds like a lot but reducing the number would mean to compromise with the material learned. Prof. Carloni does a great job making the subject interesting, up-to-date and he is not over-prepared in the sense that he thinks up the solutions to the questions he asks in class, which gives you time to follow his thoughts. The homeworks are fine, but a little concentrated on the calculational aspect of things and some slightly more "getting to know things" homeworks would be appreciated.