Daniel Rubenstein

Apr 2021

Professor Rubenstein is an extremely intelligent guy who tries and usually succeeds to explain concepts well. His slides are very helpful, and for the most part the course's material is logical enough to compensate for his scatterbrainedness. Do I wish he were a little less repetitive? Sure. Are you going to get a better fundies experience? Probably not. Is the material very fair? Yes, except for that one MIPS programming assignment (if you know, you know). Not much to add here from the previous reviews. He is rightly famous for his problems, but they're a bit like a hibachi experience: interesting and worthwhile on the first visit, but essentially all the same. (My metaphor is lacking, you say? Good. So are Rubenstein's.) This sameness should work to your advantage: do the homeworks THOROUGHLY even if they're only 10% of your grade, do all the previous midterms and finals, and you should be good to go. Many classes don't reward time and dedication. This one does. My purest joy this finals season was finding the "trick" in one of his problems and getting a third of my points in ten minutes. GO TO YOUR P-CREDIT. THAT'S 30% FREE POINTS.

May 2020

The curve in this class was harsh. The standard deviation was consistently 30+ points, so I was disappointed in my final grade despite loving the class and feeling like I understood the material pretty well. Besides the grading, I really liked this class. I seem to be in the minority of people who consider the material interesting. It's basically an overview of low-level software and hardware--we learn about circuits, computer architecture, memory, assembly language, a lot of of physical stuff that most CS majors are happy to ignore. You might not like it just because you don't like the content, which is valid. If you try to think of everything as a puzzle, it might become more interesting to you. There were weekly homework assignments that counted for 10% of your final grade. They were actually quite helpful for understanding class concepts. Since they were very low stakes (graded out of three points) I didn't have to worry too much about getting everything correct. I could just try to put in good effort and ask my TA to explain the rest. I loved the p-credit office hour setup. I felt like I was able to connect with my TA more and learned a lot from him--I was lucky to get a really good TA. I learned a lot in this class because the homework setup encouraged learning instead of punishing mistakes and TAs were very accessible. The exams were kinda meh. I felt like the instructors were not very generous with partial credit or were constrained to strange restrictions, and that's why the STD was so big. Professor Rubenstein provides many resources for studying though (including one past exam that includes pictures of him dancing, what a riot). Professor Rubenstein himself is clearly incredibly smart. I could tell because he would often make up examples on the spot or work through an example he already had without relying on his notes. His improv skills, however, were not quite as high. He sometimes got a little confused or lost in the details, which would in turn confuse the class. He could improve a lot if he would just make sure his live problem solving matched up with any lecture notes he wrote before class! His slides are detailed and beautiful. He's also clearly a bro. He was fun to have as a professor, and I wished he taught another class just so I could take it with him. Much love from pb&jae. Keep lifting!

Jan 2019

class based on midterm and final. if you're a bad test taker, well you won't do well. he added homework assignments this semester though so that may have helped some people. mandatory TA office hour every week to boost your grade (I mean not mandatory but you'll need it unless all this info comes easily to you) - a waste of time because TAs can't explain anything, but attend so that you can talk to the other students and boost your grade. Towards the end, professor didn't schedule properly or whatever so he ended up squeezing in homeworks 6,7,8 into reading week

Feb 2018

Rubenstein is such a math Ph.D. If you came from a logic background, take this with him. There was no bogus memorization, his slides were super clear; I only spent like 5 days out of the semester working on this class: 1 before the midterm and 4 before the final, and got an A-; super chill. No bogus proofs or long-winded details, just very practical descriptions of computer architecture. One of my favorite CS classes, hands down Computers are designed so beautifully. But yeah, don't take the class if you're used to getting As by copying everything the teacher/textbook says. You gotta know how to think

Apr 2017

Awesome professor! Course grade is purely based on midterm and final. Homework is assigned but not graded He posts lecture slides for reading, but will actually lecture on the board though. Goes through the material in a very clear manner and explains everything. He actually works really hard outside of the class to make sure he covers all of the points necessary. Compared to Martha Kim, he will cover and emphasize more of the theoretical concepts of computer systems which gives you a much better understanding than just doing four/five projects in Kim's course. If you don't care about learning the material and would rather just read it on your own, take it with Martha Kim. If you would like a great lecturer, take it with Rubenstein!

Aug 2015

NEVER EVER EVER TAKE A CLASS WITH RUBENSTEIN. If you do anything right in your 4 years at Columbia it will be to not take a class with him. This was the worst and most frustrating class I have ever taken at Columbia. At first he seems all buddy buddy with the class, but don't let this fool you. He is an awful lecturer and an extremely lazy teacher. It takes forever for the TAs to return hws. His assignments and tests are impossible to comprehend, filled with typos and convoluted sentences. The TA's rarely understood the hws themselves. Most of them took the class with Martha Kim and did not understand why Rubenstein would teach the material the way he did. They had to spend half the time you met with them just figuring out what he was asking. The averages in this class were extremely low. Yes, averages are often low in comp sci courses, but in this class it wasn't simply because of the difficulty. It was because no one understood the material because he can't teach!!!! After the midterm grades came back he came in front of the class and said that we shouldn't complain about the average being so low because we're columbia students and tests are supposed to be hard at Columbia. He constantly tells you not to worry about grades because they don't matter, which is just annoying. I learned more from a 10 minute youtube video than from 75 minutes in his class. I would go into more detail about the class, but he's not worth my time. I wasn't smart enough to listen to the reviews. Save yourself. Don't take this class or any other class with Professor Rubenstein.

May 2015

It's very rare to find a professor that genuinely cares about their students, but Dan Rubenstein is one of them. He might not be the best lecturer I've ever had (more specifics on that later), but he is undoubtedly one of the most helpful and caring professors I've had at Columbia. LECTURES: Like I said, objectively speaking, Rubenstein isn't the best lecturer I've had, but by no means is he a "bad" lecturer. Really, his biggest problem is that he needs to ditch the slides a bit. Instead of going through examples on a powerpoint, he'd be better off going through them on the board. It can get messy that way (with all the circuits and whatnot), but to combat that he could just post the examples on courseworks for reference. The occasional times he did problems on the board, I found them to make so much more sense than following along with the slides, and that's because, at the end of the day, he's actually good at explaining concepts in the course. With that said, see the Office Hours section for why you should go to them because they are/were super helpful. To elaborate more on him as a lecturer, he does NOT read straight from the slides. He glances at them before speaking to remind himself what's on the slide, but he doesn't read straight from them. In fact, I think he blatantly avoids doing so because he knows that wouldn't be very helpful. Also, his analogies and stories are not only hilarious, but make the classes/material memorable. Anyone who doesn't enjoy these bits of class seriously has no sense of humor. He does explain concepts too many times- I know it's because people don't get them the first or even second time around, but hearing the same concept did get tedious sometimes. Also, people complain so much about the occasional mistakes he makes on a slide, but really, I think we just need to relax a bit and recognize that he is a human being. We make mistakes. HOMEWORKS: Difficult and long, but super important for doing well in the class- not because they're worth so much of your grade, but because they're really important for gaining a good grasp of the material. Rubenstein is very purposeful in the questions he chooses, so really understanding each one is important. I will say though- the MIPS assignment was somewhat unreasonably hard, though graded extremely generously. I liked learning MIPS in the beginning, but I think holding off this hardcore assignment more towards to the last third of the semester would have served us better. I feel like most people didn't get as much as they could've from the assignment because it was just too soon to be given that hard of an assignment. MIDTERM: Super hard. It was a huge time crunch- I didn't even get to read the last question (of 4) or truly attempt the third question, which means I essentially left half the test blank. And I wasn't a rare occurrence. With that said, the average ended up being a 42, so it all worked out in the end, I suppose~ His tests are super hard, but they do drive us to really have to know the material. He warned us at the beginning that he tests this way to really get whether or not we understand the material. If you understand it and can apply it, then you'll be fine. FINAL: Easier than the midterm- the average was a 62 and it was very reasonable. It wasn't technically cumulative (but the material builds on itself, so it sort of is at the same time). OFFICE HOURS: His office hours are great, and if you can make them, you should make every effort to do so. Every time I went to office hours, it was a valuable experience and he's so willing to go through anything you don't understand at whatever pace you need. His office hours get a bit busy around the time homeworks are due (still totally useful though because people ask good questions, which I always learned from, too), but going to his office hours when there's maybe one other person or no one else is great because you'll get his full attention. This is good advice for pretty much all professors, but unlike a lot of people/professors, he won't make you feel dumb if you don't know something - even if it's a simple concept. Don't be afraid to go- he's seriously such a nice guy. He might come off as intimidating at first, but he really is a nice person and at the end of the day, just cares that his students learn the material. The only problem was that he had his office hours in the same class sequence at the same time (i.e. Tuesday/Thursday from 11am-12pm), which made it really hard/impossible to make office hours if you have a class during a portion of that time. I had a 10:10 and an 11:40, but if the 10:10 hadn't ended early lots of times or I didn't accidentally sleep through it occasionally, I would have never been able to make his office hours, so if you're in his class, really try to get him to not have office hours in the same class sequence. TIPS: 1. Goes without saying, go to his office hours. Not only useful, but he apparently takes office hour appearance into consideration when grading at the end. 2. He's a chill professor- get to know him. Also, he does research on networks and that's pretty cool. 3. Skim the textbooks if you want, but don't read them religiously because Rubenstein does a good enough job that you don't need to read the textbook. If you want to read them though, they're actually not too bad of a read. 4. Do his practice midterm/final problems! 5. Go to class. Seriously, you pay/get financial aid to go here and Rubenstein is both good and entertaining. Why skip if you don't have to? THE FINAL WORD: Students tend to have a preference for Martha Kim's version of the class, but I think a large portion of that is because her class is easier (And that is the attributed reason at least half the time)- she doesn't go into the material as in-depth (at least according to the lectures, which I've looked through), so the tests and homeworks are much easier (I've gone through them for practice). So with that said, if you're looking for the easier class, then sure, take Fundamentals in the fall with Martha Kim (she is also very nice and a good lecturer as well), but if you're looking for the class that will make you/cause you to learn more and know the material a lot better, then Rubenstein's your bet. He'll challenge you and you'll hate him temporarily when you're coding his MIPS assignment at 3 in the morning, but at the end, you'll have gained so much knowledge that you'll realize it was worth the struggle. With that said, I had a great class experience with him, especially because I appreciate professors whose main goal is to challenge and have us learn and is willing to go the extra mile to make that happen.

May 2015

Oh man. What a terrible, terrible, terrible class. What a truly frustrating experience. I'm aware that Rubenstein is not teaching fundamentals next semester, but I don't care, because the world needs to know how fucking terrible he was for fundamentals, so that hopefully nobody will have to go through it if he ever teaches it again. THE LECTURES: Prof. Rubenstein reads from his slides. Word-for-word. The lectures are aggressively boring, to the point where Rubenstein himself would get bored––at which point he would tell a bizarre and completely unrelated story ("So this one time I had a 6AM flight, and I was staying at the airport, so I told my friend I could wake up at 5:45 and make the flight, and then I actually did it, just to see if I could, but I forgot that security still takes like two hours even if you're sleeping in the airport, so I ended up missing that flight. Anyway")––and then get back to some of the most amazingly uninspiring lecturing I have ever witnessed. I can't believe I consistently went to this class. It's a waste of time. THE HOMEWORKS: Always tedious, and the questions are often extremely unclear. Unfortunately, the homeworks are only tangentially related to the slides/the classes, so 80 percent of the work you'll be doing on these homeworks is figuring out what he actually wants you to do. There were 8 graded homeworks this semester––there were supposed to be 9, but somehow, even though we do literally nothing in class, Rubenstein fell behind, so that there was a 9th ungraded one (but it was still fair game for the final!) THE TESTS: As annoying as the homeworks are, the tests are a worse version of the homeworks. Completely unrelated to the tasks you do for the HW and the slides, these tests are difficult, confusing, and don't really reflect your understanding of the material. Every question introduces a new concept, so that you will be scrambling to read through his (often error-riddled) questions until you figure out the game for that particular question. THE MAN HIMSELF: The thing is that I actually kind of like Rubenstein––he can be funny and he's kind of a goofball. But he is just a truly bad teacher. Please, for your own sake, don't take fundamentals with him.

May 2015

Prof Rubenstein is clearly very smart - it shows because he makes really good slides that explain things well. But every lecture, he gets onto the stage and fumbles for 75 minutes. It is frustrating for students who do not come in with a lot of knowledge about computer organization, because he appears unprepared. There were quite a few times where I skipped the lecture because it was more helpful to spend the time studying the slides on my own. Ended up doing just fine on the homework and exams. It's not as bad of a class as everyone says - just that if you come in w/ less knowledge, you have to put in the work to make up for that gap (and Rubenstein isn't helpful for that). Talking to the TAs makes a big difference because many are knowledgeable and good at explaining stuff. But again, you need to do that on your own time if there's something you don't know, so depending on whether you think you will do that, maybe reconsider taking it with Rubenstein.

May 2014

Ah, Rubenstein. He spent the first lecture telling us how last year's culpa reviews were all wrong, and at first I thought it was going to be okay but then... Okay, okay. So he's not the worst. It could always be worse. I survived the class and learned some cool stuff. And yeah, he's a nice guy and a great person. But when every sample final exam that he gives us has at least one mistake in it, and when he doesn't even know the answers to his own homework problems... It makes me pretty worried. I actually don't think that he was that bad of a lecturer and I didn't really mind that the slides had some typos (though I'd maybe recommend not scribbling all over the whole slide in red... I heard someone got him a stylus but I don't think that helped much). He was decently helpful during office hours too, and he does seem to really care about us learning. The main problems were the homeworks and exams. As a previous reveiwer mentioned, homeworks were posted late and graded late and sometimes tedious, but that wasn't even the worst part. Towards the end, some of his homeworks would ask questions to which he didn't even realise the answer, until a student pointed something out to him in office hours. He then tried to say that it was still an answer too but, c'mon, when the question asks "How can you minimize stalling?", "you actually can't" shouldn't be the answer. Our own midterm had a few very significant typos in it (he gave an example of how his state machine worked and his example contradicted the instructions) and our final had a few errors too. Luckily, he grades on a pretty good curve. I didn't think I was doing amazing but I ended up with an A. Basically, if you're stuck taking this class with Rubenstein, it's okay, just keep up with the material, go to office hours if you need to, and find some friends in the class to cry with when you can't handle it. And hope that he's a bit more organized next year. If you have a choice though, I'd recommend trying Kim.

May 2014

Rubenstein's a pretty chill guy, but not the best professor. He often gets confused by his own typo-riddled slides. You would expect a professor who has taught this class several times in the past to know his material by now and have error-free slides. While some of these mistakes were corrected, there are still plenty of typos in his lecture slides, so be aware of that when studying from them. Also, logistics are poorly organized with HWs being posted late and taking forever to be graded. Starting with basic logic gates, the course slowly builds up towards creating a CPU. You learn about the underlying hardware behind a simple computer and how the programs you write actually work. The material in the first half of the class can be a bit boring, but you see how everything comes together when discussing the MIPS architecture, which is pretty cool. I was bored because of the slow start (I took Intro to EE and CS Theory before Fundamentals, so the first month was just a rehash of things I already knew). Hence, I never participated or really cared about was going on. Rubenstein would also give students points for discovering errors in his slides, and I felt like it detracted from the class because it "gamifies" education. Sometimes I would notice mistakes in the slides and not bring them to his attention because I didn't want to partake in his silly point system. Also, the homeworks were super tedious and didn't teach you much. They aren't representative of the harder yet more thought-provoking questions he asks on his exams. The midterm was hard. It was longer than the practice tests, and it was nearly impossible to finish within the allotted time. It also had a couple of typos. His exams are open book, but it doesn't really help much because the questions he asks on exams generally require you to extend circuitry covered in class and solve problems creatively. He has good intentions for his exams. They are designed to make students think by asking non-trivial and interesting problems, but they're poorly executed because of the often long and winding questions or just because Prof. Rubenstein didn't think the solution through enough leading to a different answer than what he expected. Partly because of my attitude towards class and because of the difficulty of the test, I did pretty badly on the midterm. In the second half of the class, I made an active effort to pay attention. I found the course much more enjoyable (may have been because the material became more interesting) and Prof. Rubenstein a much better teacher. He's pretty helpful in Office Hours, so please go to them if you get stuck. The final was better than the midterm because I actually cared about the material and also because of the extra time we had. In the end, what you get out of this class depends on how much effort you put into it. Rubenstein's not the most inspiring teacher, so unless you take the effort to ask him good questions, classes can be pretty boring. You have to push him to take an interest in teaching you. I think, overall, it might be better to take Fundamentals with Martha Kim for now. Rubenstein's not bad, but there's a lot he can do to improve Fundamentals. (He also reads CULPA reviews, so I hope he makes the class better in the future).

May 2013

Ugh. I completely agree with the previous few reviews--Rubenstein is a really nice guy who comes to class unprepared to do anything but read off his slides. On the bright side, he gives great, challenging homeworks, and tests that you can't really study for except by doing these homeworks (a lot of people cheated on homeworks, which he acknowledged, but that became clear from the tests). I learned...something? from this class, but only from the homeworks, not from him. If you can, take it with Edwards/Kim. Or hope that he posts his slides online but teaches by hand on the board instead (the days he did that because of technical problems we learned, for once). Pro-tip: go to his office hours. He'll walk you through any problem you have, including those on the homework. He'll also boost your grade at the end of the semester if he knows your name.

May 2013

These recent reviews are not entirely accurate. I took the course this semester, and received an A-. I was likely boosted from a B+. That happened because I attended office hours each week for assistance on understanding and completing the homework. Contrary to others' claims, I learned more in the class by having the opportunity to effectively discuss the questions and solutions to the HW with great TA's and with the professor. If you showed up with relative knowledge of the material, the professor or TA's would literally give you the answer if you couldn't reach it yourself. They sought to totally set you up for success. If you didn't take advantage of that assistance, that is your fault and I don't feel bad for you. The criticism I have for this class amounts to concerns about interest by the professor. I don't believe Professor Rubenstein is teaching material he prefers to teach or learn. This results in a class that is less enjoyable, and is unfortunate at Columbia. His course would be 10X better if he enjoyed what he taught, and showed that. That being said, he showed he cares for his students' performance and puts in his stated time to assisting students. I wish I had purchased the book. I think the summaries he provided were at times challenging to understand. I also wish the course had a bit more of a clear connection and purpose between the first half of the semester and second, but we always have concerns. The perspective is this - We can read, understand, draw, and design circuits that do cool shit. And if you can't, you screwed up in class and I don't feel bad for you. And you also probably cheated off someone else's homework so fuck you.

May 2013

This course is required of all CS, CE, and EE majors, however EE and CE majors will probably find themselves more prepared for this course. This is because engineering students are already exposed to digital circuits in 1201, and are generally more comfortable with design at this level of abstraction. Rubenstein's slides were very detailed, and I never once needed to look at the textbooks. While his assignments and slides did sometimes contain errors, he fixed them right away. He also posted several practice exams, which were very useful in preparing for the midterm and final. I do wish that he worked through his examples on the blackboard instead of showing them on slides. Also, it would have been nice if he could have found more ways to engage students during class. Overall, I'd say that Rubenstein is a good professor, since ultimately I learned a lot from his course.

May 2013

Let me preface this by saying I received a C in the class but it's also the only C i've gotten at Columbia in 4 years (never even gotten lower than a B). In any case take, everything with a grain of salt. Now there are a factors here that contributed to this that are beyond Rubenstein's control and are my fault, such as the fact that I don't really have a background in computer science, I never went to his office hours (I did attend the TA's occasionally), and I'm a second semester senior. That being said, Rubenstein's style is that of the prototypical SEAS professor. There's a certain level of irony to this, because in his lectures he comes across as personable guy, he speaks English quite well, and he has a great sense of humor, none of which are very typical for engineering professors I suppose. However, none of that means shit if you spend all your lectures expressionlessly reading off slides, do not provide a good text book and assign cryptic error-riddled homeworks expecting people to be able to solve them purely based on what you wrote on those self-same slides. These slides, as the previous reviewer pointed out are also often riddled with errors. Moreover, they are quite repetitive and there are only a few that are truly important in every lecture, whereas the rest seemed like useless filler. Then there are topics that show up that aren't covered very well in the slides on both homeworks and tests. Generally speaking, I'm pretty sick of this en vogue teaching style where professors don't have to do anything except for recite from slides. It's not conducive to learning, and yet somehow the super-genius professors of SEAS still haven't figured out why people don't attend their classes. Or more likely they have, they just don't give a shit, since giving a shit about their students is not high on their priority list. This obviously wasn't the first class where this has happened, and I sincerely doubt it will be the last. The true tragedy here is that Rubenstein seemed well enough aware, occasionally stopping in the middle of his lectures to ask the class if they understood what he just said, and when less than half the class raised their hand, he would proceed to explain the exact same concept all over again in the exact same way. This created the illusion of concern, while truly accomplishing nothing at all. Again, it may be harsh or nigh impossible for me to claim he didn't care when I never went to his office hours; however, generally speaking, his lecturing style came off as lazy and unconcerned, which puts him squarely in the "average" range for SEAS professors. As far as attending office hours goes, he said that if we could show him we knew what we were talking about in office hours it could only help our grade. Unfortunately his lectures were often so devoid of content, I actually didn't learn very much, so I truly didn't know what I was talking about and probably deserved the C. So I guess you should take him if you want a lecturer with an interesting personality and sense of humor and have a pretty good background in this stuff.

May 2013

There was not much I liked about the course taught by Rubenstein. The best days in class were when Edwards/Kim came in to sub for Prof Rubenstein when he was out. The worst offenses: * He is not prepared enough for the lectures in order to make the material engaging or easy to understand. They consist of him reading off of his overly complicated slides and often not coming up for air. * He does not require a textbook but suggests two textbooks. His slides are basically reproductions of the books. I had the textbooks and did not think that the slides were enough to understand the material by. I think it's unfortunate that he uses two books when the course could be summed up in one book. He should drop the awful Mano and Kime book. * His homeworks are a mixture of totally tedious repetitive nonsense (adding binary numbers excessively) which teach little, to extremely esoteric circuit creations which also do little to explore your understanding of the material. Perhaps the course is meant to test your ability in solving puzzles through building circuits - if that is the goal then I guess I've misunderstood the intention of this course. * His homework policy is to allow for cheating. He allows people to collaborate on the assignments which in my opinion discourages anyone from doing their own work. For those that do their own work and do not compare answers before submission are just out of luck I guess. If you submit without comparing your answers and knowing you have 100% going in, I guess your'e a dope. If the whole class is allowed to collaborate why even give credit for the assignment? * His exams are insanely unfair in my opinion. After having done reasonably well on the homework assignments I felt unprepared for the midterm/final. There are some reasonable questions but then there are those that will boggle the mind how they accurately test my understanding and knowledge of the material. But again maybe I've failed to understand the goal of this course. His exams consisted of reading a mountain of text to explain the premise of creating some new fangled circuitry. Then having questions part b through d rely on your successful understanding and completion of part a. It doesn't help that in this mountain of text it is mostly incoherent explanation of what he is trying to express. My impression is that they were overly complicated and/or error filled. * I have had some minor experience with this course's topic before and usually find it fascinating but I found myself unwilling to participate towards the end. * The course covers too much ground and not enough of it carefully. There seems to be a theme that a lot of what we are learning is not necessary to know. That's insane to me. Everything we learn should be at least interesting and inform our future. Cut out the small extraneous that have no relevance. The good: * He is a nice guy and office hours are very useful. * When he would work out a problem manually on the board this was a very useful exercise. Often I think he would realize the absurdity of certain questions when it would take him 20-30 minutes to complete. * He reads feedback and there was an adjustment to the pace of the class which at first was going a mile a minute for no reason.

May 2013

I have no idea how the previous CULPA reviews gave Professor Rubenstein such good evaluations. Lecture notes were riddled with errors, as were homeworks and homework solutions. Lectures themselves were very hard to pay attention to due to the multitude of conflicting information conveyed to us (Prof. Rubenstein had to correct himself and the slides during pretty much every lecture). He wrote on the board for maybe two classes, and those were probably the classes that I actually learned the most. Homeworks are very repetitive and students often dreaded doing them because the questions were updated with corrected versions; we still only had one week to do them, so more often then not, I chose to start later in the week waiting for all the corrections to come out. Also he is very terrible at answering emails (I put 3827 in the subject line of all of my emails!). Sometimes questions to homeworks would be answered after the homeworks were due. He has very strict extension policies. A couple of my friends just got 0s on their homeworks because they were sick/absent/had religious reasons for missing the deadline. All in all, I don't feel like Prof. Rubenstein's teaching was effective, at least for me. But during the times I went to office hours, he was helpful. It seems to me that in general, he gives no shits about his students. He also said he reads CULPA reviews so I guess this is my honest opinion.

Dec 2010

This is the first review I've ever written on culpa, but I have to say prof Rubenstein is the best professor I've ever had. I was initially hesitant to take this course because I was scared of the course material(circuits! circuits! and more circuits!), but professor Rubenstein presents does an amazing job of explaining things and his lectures are actually enjoyable. I, too, was somewhat worried after reading the old reviews, but now that I've taken a course with him, I know for a fact that those are not an accurate description of him. (Maybe his evil twin brother as someone suggested...) If you need to/want to take Fundamentals, by all means, take it with him. He makes great lecture slides(that are actually better than the textbooks) and post them on the courseworks ahead of time. Some students just read over the lecture notes and do not attend the lectures, but I suggest not to do it because 1. the lecture notes are quite condense and hard to understand without the aid of lectures (at least for me) and 2. it's one of the few classes where lectures are golden. His lectures are very interactive and he makes it obvious that he's enthusiastic about teaching (which can only help the students). Although the pacing can be somewhat fast at times, if a student asks a question, he'll slow down and explain to make sure the student understands the material. There's about one homework per each week (9 HW total). Homeworks are reasonable, but can be tough. It depends on how much background knowledge you have (If you're good at circuits, you'll breeze through the first half of the course). Start at least 3 days before it's due and go to the office hr if you're having a hard time. His tests are open book/open note, but since he asks design questions, you have to have a solid understanding of the material. There's no surprise questions and he won't try to trick you, but will test you how much you understand the core of the material. Take HW problems seriously, as they will help you tremendously. Office hrs literally saved me. This is the only course I attended office hrs on the regular basis. You come in with a question, and you will walk out with a full understanding of the material. If you have a schedule conflict with regular office hr, don't hesitate to email him and make an appointment. He truly cares about his students, and he'll make time for you. In fact, I never went to his regular office hr as I had another class during the time, but I never had a problem getting help whenever I needed. I got the questions that would take me 10 hrs to understand answered in 20 minutes. He's approachable, funny, enthusiastic, and truly cares about the students. Take this course with him if you can, and you won't regret it. Interesting course material taught by a great instructor, what more to ask?

May 2010

Rubenstein definitely takes these reviews seriously, and has improved dramatically. Don't worry about his old, negative culpa reviews, because the he is nothing like that. He is one of the best professors I have had at Columbia in CS. After having taken both Fundamentals and Networks with him, I highly recommend him. His lectures are spread between writing on the board and going over lecture slides that the textbook made. Both are pretty good, but when he writes on the board, he can go really fast. If you don't want to fall behind in class when he's writing on the board, don't copy everything down (though I did, and I often got lost). Listen though and ask questions. The textbook might serve as a good resource. I referred to it several times, but you could probably get away with just using Wikipedia. There's no assigned reading but he does cover nearly everything in the textbook (and more). Homeworks are reasonable. The first two programs are the hardest, but after that they just get easier (and even easier still). Do yourself a favor and do them in Java, trying to do the noble thing and programming in C just won't cut it. The first program will take 40+ hours in C, or 10 hours in Java. Your choice. You have plenty of time for the programs. The separate theory homeworks are assigned with only 1 week to do them (sometimes concurrently with the programs), so if you don't start early they can be tough. His tests and theory problems work the same way. You learn the basic concepts in the class. Then you're asked questions that rearrange problems to something you've never seen before and are something that was covered in class. The only way you can do well is if you have a strong understanding of the material (obviously). He is a fair/generous grader and a nice guy if you go to his office hours. Listen, ask questions in class, start the programs relatively early (and do them in Java!), know the concepts and you'll do fine. Usually the class has a low average too. Do take this course even if it's not required for your track. Unlike some CS classes, the material is actually interesting and relevant to so many things. No abstract theoretical stuff that you can't relate to anything. All in all, an excellent course and excellent professor.

Mar 2010

Professor Rubenstein was great. I think it's unfortunate that he received such bad reviews in the past, but it's clear that he's taken the feedback and changed his style of teaching - he frequently stopped and checked in with the class to see if everything was comprehensible (and it almost always was). He also did a fantastic job of scheduling the course, and he made sure there were days that existed only for review before tests. He also is extremely helpful during office hours, although you probably won't need to go. The course is a strange combination of both fascinating and quite simple, conceptually. Most people will be learning a completely new facet of computing, but Prof Rubenstein made it both easy to understand and interesting. He takes a very bottom-up approach; you'll start with binary math, then boolean logic and gates, then designing logic circuitry, then ALUs, registers and eventually basic processors. It's a really cool course. Also, Dan is just the man.

Jan 2010

Prof. Rubenstein is really nice person. He tries to make everything clear to you and put lot of emphasis on concepts. He prefers to write everything on board rather than using slides. His way of teaching may or may not be preferred by students. Its depend on students. Like many students including me were comfortable with board. Prof. Dan tries hard to make you fundamental clear and theoretically sound. If you attend his lecture regularly, understanding concepts of CN will not be problem for you. The only thing that was that not much time was spent on practical and programming. You yourself has to learn socket programming. If you are doing it first time then it may take some time. Overall a very good class. You will really learn a lot especially if you are new or little knowledge about Networks.

Dec 2009

Overall, I think Daniel Rubenstein was an excellent professor. Specifically, the majority of his lectures were extraordinarily clear. He had well prepared slides for every class, often with plenty of well-chosen images from the textbooks, and spent most of the class time describing what was happening in the pictures. One of his greatest strengths was being able to clearly and succinctly describe and give insight into the functioning of a circuit or architecture. He was also unusually receptive to questions during class. By and large, the students asked thoughtful and helpful questions, and as a result, he was able to clarify almost all subtleties and potential pitfalls in the material. The lectures seemed all the more engaging and participatory as a result as well. All this praise aside, I can how see professor Rubenstein may not be a good fit for every student. Specifically, to get the most out of this course, it is best to take a very active approach. I agree with a previous reviewer that "it's best to ask a lot of questions and make sure to make it your responsibility to clarify all the material that is taught." As I mentioned above, one of the reasons that the professor was able to make the material so clear was that students asked questions whenever something was less than one hundred percent clear. As for the course as a whole, it felt like a gradually unfolding adventure/mystery story. We took a thoroughly bottom-up approach, and starting from the absolute basics of binary logic, gradually added new layers of abstraction until we had essentially designed a computer out of nothing. I was always on the edge of my seat waiting to see how all the ideas we looked at unfolded and built on each other to eventually construct such an amazing machine. Some of the ideas we covered, such as latches and flip-flops, are so utterly brilliant that I think it is somewhat of a shame that we never considered the engineers and inventors who were responsible for them. More generally, I think the ideas we covered in the class could have put into a richer historical context.

Dec 2009

It would appear that Prof. Rubenstein's evil twin taught this class last semester. Don't worry -- the real Dan is back. His slides are gorgeous, his lectures are unfailingly clear, and he's eager to help out outside of class. Apparently he's used to teaching by drawing everything on the blackboard, but he had rotator cuff surgery early in the semester and had to do everything via PowerPoint to avoid damaging the muscles. Surprisingly, I think this turned out to be a good thing. Once you get into some of the scarier-looking circuitry, I imagine that it's easy to make make mistakes drawing, and I'm certain that it takes forever. This way, we got straight to (relatively) error-free drawings and spent time talking about the big picture instead of worrying about which wires cross. This is also one of those rare classes where the material is interesting without being difficult. Five or six people in the class got perfect scores on the midterm, and I suspect a similar number aced the final. I don't think it's that Rubenstein makes the tests too easy -- this is just really straightforward stuff. The few complaints I have are relatively minor. I think he was still a little sensitive about the last time he taught this course (with reviews like those, who wouldn't be?) and made a point of stopping to make sure everybody was following. This was nice, but the endless refrain of "are you with me? Raise your hand if you understand" got a little irritating by the end of the semester. He also seemed to get a little bit confused by some of his own notes about pipelined architectures, but everything worked out in the end. In short, don't be scared off by any review written before 2009. This is a good class with a good instructor, and I would wholeheartedly recommend Prof. Rubenstein for Fundamentals. A side note: The class nominally requires two textbooks. You can get by without buying either, but your life will be a little easier if you get Patterson and Hennesy. Don't bother with Mano and Kime -- it's almost completely useless.

Apr 2009

Professor Rubenstein tries to do a good job, but in the end his attempt at teaching networking is not very good. There are a few ways he can improve this class. First of all, he teaches the class from a very theoretical point of view. Considering this course is described as an “Introduction to computer networks,” he needs to focus less on the theory. The theory he teaches is excessive to the point that it’s hard for me to follow how the theory relates to networking in real life. I don’t have a problem with theory, but first I’d like to learn something practical so that I know how to apply the theory. Prof. Rubenstein clearly states that he does not follow the book. I understand that many professors do not follow the book because they need to present material that relates more closely to the course. Unfortunately, in this situation, it’s a big mistake. Based on the course description, the material in the book is better than what Prof. Rubenstein teaches. Compared to other classes, Prof. Rubenstein also puts a lot of weight on the mid-term and final. Based on the amount of effort I’ve had to put in to the homework and programming assignments, I think the assignments should be a larger factor in the overall grade. He barely teaches anything in class on how to do the programming assignments. This leaves students with a lot of work although it only counts for a small portion of the grade. I would’ve liked to learn about networking in this class, but unfortunately it looks like all I’ve learned is strange theory that I have no idea how to apply to real life. I think Prof. Rubenstein could do a decent job teaching the course if he would just read the course description one more time and realize that he doesn’t need to teach anything other than what’s presented in the textbook. Save the theory for a different class, don’t give it to us in the introduction to networks class.

Dec 2008

The professor is not very good. He is not really clear during class, but is very willing to help you understand the material. It's best to ask a lot of questions and make sure to make it your responsibility to clarify all the material that is taught, because you can't expect that of this instructor. He really wants to make you understand, but because he is not very clear at it, it might be harder if you don't show you don't understand and don't ask questions. So, use office hours, study from the books often, and make sure you get everything clarified. Also, he is very poor on expressing himself. On the final exam, one problem had a mistake in it because it was worded too awkwardly and ended up contradicting itself. This ended up being a big problem because we couldn't do much of the problem until the question was clarified. I ended up kinda guessing what he meant to ask. Also, the really bad part was that this was 1 out of 5 problems, and the next 2 problems built up on the one that had the error. Generally, very unclear demands. Unfortunately, if you want to major in CS or EE, you probably have to take this class, so you don't get much choice. But make sure you go in prepared to face a lack of clarity. So make it your responsibility to clarify everything. You will get help, but need to ask for it, because chances are information won't come to you in a organized format at first.

Sep 2007

First of all, Rubenstein is a little insecure. At least that's the first impression he gave to me, and I write this knowing full well that he's going to read this review. In the introductory lecture, he spent a full five minutes explaining why the reviews of him that were posted on CULPA are unfair. While I've heard professors respond to CULPA reviews before, I've never seen anyone get so defensive about one. It leaves you with the impression that he feels like he's got something to prove, which is unfortunate since he's not a bad teacher. Unfortunately, for all the time he spent preparing his defense of his CULPA reviews, he never really seemed to spend enough time preparing to teach the course. The fact that he doesn't like any of the books out there isn't by itself a problem, but he needs to understand that there are people who like to be able to use books as a reference, to supplement lectures. The fact that he didn't decide whether to teach the course top down or bottom up until the second lecture meant that he couldn't recommend a book that covers the material in the same order that he would. This meant that those of us who tried to use the book he suggested to help with the early material were stuck with references to things that wouldn't be covered until the end of the course. How difficult would it have been for him to take the time to make that decision just a few days earlier so that he could suggest a book that could complement his lectures? Likewise, despite requests from several students, he never produced any kind of schedule for the course. No one had any way of knowing what would be covered, when it would be covered, or when the assignments would be due. This was especially problematic around midterms, when people are trying to budget their time, and Rubenstein decided to give out the information pertinent to assignments at the very last minute. I don't have a problem with teaching networks from a theoretical perspective, but I wish he spent more time talking about networks early on and less time trying to justify his decision to teach the way he does. Furthermore, everyone in the class has already taken a stats course of some sort, since it's a prerequisite for the course. It really wasn't necessary to spend 3 lectures early on explaining about expected value, especially since there was no schedule that people who already understood stats could refer to so that they could skip the redundant sessions. The assignments were the kicker. He's certainly not the first CS professor I've had who's extremely rigid about assignment deadlines, but usually the ones who are that rigid are obsessive compulsive about posting the assignments well in advance and making sure that the project specification is detailed enough to avoid problems. Instead, Rubenstein would give out assignments usually a day or three after he promised, only to have to go through several rounds of revisions to account for mutually contradictory requirements within the project. It's not that the assignments are bad, just that he doesn't seem to take enough prep time to really set them up properly ahead of time. As for his exams, he takes great pride in making them hard, which is certainly his right. The trick is to understand that he'd always rather ask a question designed to trick people than directly test their understanding of the underlying concepts. While it's useful to understand the concepts, you need to go into his exams trying to find the places where he's trying to trip you up. Unfortunately, this means that performance on the tests is at least as much about your ability to outsmart Rubenstein as it is about whether or not you're learning about computer networks. All told, don't go out of your way to take any classes with him. He's not bad at standing in front of a room and explaining things, but he seems thoroughly uninterested in spending sufficient time preparing to teach. As for the theoretical angle he likes to take, it's not as bad as the other review would indicate, I just wish he hadn't wasted everyone's time with remedial stats in order to do it.

Jun 2006

My biggest disappointment with this class was how dry and uninteresting he made networking. This modern, dynamic, complex topic that is fascinating to me in all other contexts was presented so that his students will assume they are bad at it, and will shy away from it for the rest of their career. The best analogy I can think of is, it was like we were starving and all decided to try sushi for the first time. When we arrived, instead of bringing us delicious sushi, we were brought a dead fish that we had to dissect using our hands, all the while being criticized by the sushi chef for our poor technique. We all left slightly sick to our stomachs and unlikely to try out sushi again anytime soon. You won't get any big pictures here. You won't learn about any actual protocols in use today. You won't hear any of the vocabulary everyone else in the industry uses to describe network phenomena. But on the upside, you will use all of that probability and discrete math that you thought had no real-world application. He says that he doesn't concentrate on details (usually after he's just been called out for getting them incorrect), but every concept we discuss is presented as a mathematical proof. This means that you will leave his class not knowing how to use the word "bandwidth", but you will be able to draw the min-max fluid model of traffic flow. Bottom line: unless you're an EE major, don't take this class. If you absolutely have to, at the very least, don't assume that this is all there is to networking. Promise me you'll give it another try some other time.

Jan 2005

My worst academic experience. Pay 200% attention during lectures if you are taking his class since nothing he teaches in lectures will be found in the textbooks. Never buy the textbook he assigned since I have never used it once. Professor Rubenstein seems to be a very smart person and he gets annoyed with questions. Don't take his class if you have problems getting up. He always has 9:00am classes, hws are due at the beginning of the class and LATE assignments are never accepted, even if you arrive 30 seconds after the lecture has started. Homeworks are very very difficult, so are exams. you are doing really well if you get above 70% in HWs. Midterms and final scores usually averaged around ~ 40%.