Computer Science · Columbia University
This is a very interesting class. Ie, it bridges the software and hardware part of computer systems. Professor Simha is a good teacher, he uses board and slides when possible. He answers questions thoroughly and tries to keep students engaged. The materials, in my view, weak, are very foundational to understand how and what goes into designing computing framework.
GOAT professor. Very interesting material learned so much. Got more out of it than Security I.
Simha didn’t really know what he was doing, but he certainly tried. He was not a particularly good teacher, and I was lucky that I’d seen much of the first half of the course in Intro to EE; many of my CS friends were totally lost from the get go. We were all pretty confused during the second half as well, which covered computer architecture and assembly language. To his credit, Simha sent out regular surveys for feedback, and did seem to care. However, this does not excuse the fact that the problem sets were totally unlike what we had learned in class (as in going to class wouldn’t even prepare you to answer them, you’d need to read the textbook). Luckily, they were ungraded, and most people I know wouldn’t do them. The logistics of this class were the worst I’ve ever seen, and worse than anything I could possibly conceive of myself. Attendance factored into your grade, but since it was a 300 person class, Simha made us hold up signs with our name and UNI on them and then photographed the entire room (309), having the TAs search through the photo to mark us present. There were weekly “study groups” (recitations) that were longer than class itself and factored into your attendance grade. These were really awkward, since everyone would sit there and not pay any attention to the poor TA. For the midterm, which was after the semester had been moved to remote instruction, Simha ha…
great lectures and explanations. took the class only because it fit my schedule but came out of it genuinely interested in the material covered in the class. definitely worth taking.
Simha is the worse professor I've had at Columbia. He gaves way too much work; the work from his class was more than the work from all my other courses combined. He doesn't seem to understand what a reasonable amount of work is. His lectures are extremely boring and hard to follow. The assignments and tests are poorly written and are ambiguous making the already difficult work even harder. As a person he's kind of a nice guy. However as a professor he seems to think that students have no other commitments beyond his class. Overall, avoid this professor at all costs.
Prof. Sethumadhavan’s class is one of the best at Columbia, hands down. It’s super well-structured and does an amazing job demystifying how modern computer systems actually work. If you’re even remotely interested in systems—or just want something that’s incredibly useful for internships and jobs—you should absolutely take this class. Honestly, the material from just the first two months helped me answer so many interview questions. The parts on memory and out-of-order execution were awesome, but the material on locking, coherence, and consistency...next level. It also tied together a lot of concepts I’d seen in OS and other courses, and cleared up so many misunderstandings I had on how stuff really works. The quality of instruction is top-notch. Prof. Sethumadhavan is super organized and has this incredible way of breaking down complicated concepts so they’re easy to understand. He mostly used the board in class, which made it easier to follow along in real-time. Even when I missed a couple of lectures, I was able to catch up by borrowing notes and going to his office hours, where he was super approachable and willing to explain anything I didn’t get. We also worked through some in-class problems, which I found super helpful. I wish we’d had more of those, but I get that we had a lot of material to cover. The TAs were great too. One of them mentioned in class that the key to…
4 homeworks and 1 long homework. all group work.
Professor Sethumadhavan genuinely has a passion for the subject and makes an effort to teach. However, his teaching method is not too effective; he comes in with powerpoint slides, but unless we've read the book thoroughly prior to the lecture, it's very difficult to keep up. Sometimes, he'll realize that he made a bad lecture, and he'll come to the next lecture being a lot more prepared. I have to give him an A for effort. He makes some joke in class, which weren't funny, but at least it shows that he tries to lighten up the mood. He also makes an effort to remember your name. This is his first time teaching in Columbia, so hopefully, by the time he teaches this class again, he'll be better prepared and teach a lot better. The textbook for the first half of the class (Brown and Vranesic, Fundamentals of Digital Logic with VHDL Design, McGraw Hill Publishers, Second Edition) was very poorly written (it refers to examples that require the reader to flip back ~10 pages), but the one for the second half (Patterson and Hennessy Computer Organization and Design: The Hardware/Software Interface, Elsevier, Third Edition) was much more well written.
Computer Architecture is one of the most important classes you should take if you have any interest whatsoever in the intersection of software and hardware. Essentially, if you were a big fan of Fundies, then you'll love this class. The class starts with memory systems such as DRAM, SRAM, and most importantly CACHE. A lot of memory systems can be boiled down to types of caches and their implementations within large pipelines. Out of Order processors are the next large topic that really allows you to understand the life cycle of a program. I found this part to be the most challenging with all of the micro-architecture details, but extremely cool to learn. Finally, you'll end the class talking about Network on chips, GPUs, and ML centric chips. Overall, a very interesting class. Simha makes this class manageable since it has the potential to be one of the hardest CS/EE classes. Simha is actually one of the greatest professors in the CS department, he actually spends a lot of class making sure that everybody understands what he talks about. Especially in office hours, he takes the time to get to know you as a student and help you learn. I would take any chance to go his Office hours again if given the chance.
Weekly paper readings and a serious final project where you implement/extend one.