I took Data Structures & Algorithms during the Fall 2009 semester, which was taught by Peter Allen.
On the whole, I think Data Structures & Algorithms is a great course that gives CS students a solid grounding in how to think about solving computational problems in ways that are efficient with respect to time complexity and memory usage. While I learned a lot from this class, I think it would have been possible to make it slightly more advanced than it was. There was a fair amount of overlap with the data structures component of COMS 1007 and, in my opinion, not enough time was spent on learning more complicated algorithms and data structures. Nevertheless, at this point, I feel that I have a solid understanding of all basic and intermediate DSA, which is of course extremely critical to success in CS. My only other complaints about this class are that the homework assignments were a bit too easy (or at least were graded as such) and that the programming assignments all required GUIs, which ended up requiring more time and effort to implement than the algorithms themselves.
Professor Allen is an excellent lecturer who does a great job of making sure that the concepts that he's presenting are clear and that the students have thorough exposure to how a particular algorithm works. I read an earlier review that said that Professor Allen can be an asshole who berates students for asking questions/giving answers. While I must say that there were a couple exchanges that Professor Allen handled in a bit of a confrontational way, I think this was unintentional, and I think he really does care about his students and their success. He is also a very funny guy, so I think sometimes his humor is such that his jokes could be construed as reproaches. He is very helpful both in office hours and over email. Additionally, his handouts are so fantastic that I anticipate using them as reference materials for years to come.
While generally I don't think a TA's contribution to a class merits review (positive or negative), I believe that Dan Federman warrants an exception (positive). First of all, as a recitation instructor, Dan was very good at both reviewing things that Professor Allen had gone over during lecture as well as delving deeper into certain topics that were either not discussed at all in lecture or were merely glossed over. In addition, I found Dan's recitations to be extremely helpful when it came to clarifying the details of our various assignments. DSA required every assignment to be implemented with a GUI, which could have proven to be exceedingly burdensome were it not for Dan's ability to explain the finer points of Java AWT/Swing. Dan's recitations were effective not only as a consequence of his intelligence and knowledge of the subject, but also because of his ability to present material in a very dynamic and engaging way. Secondly, from an administrative standpoint, Dan was incredibly responsive when it came to fielding questions about the logistics or the substance of the course. Finally, Dan made a point of putting the class into a "real-world" context by discussing the kinds of applications the various data structures might have or by going over what sorts of DSA-related questions might come up in interviews. This information is invaluable and was extremely helpful. I am taking CS classes at Columbia as a postbac, and so I have had plenty of experiences with TAs as points of comparison. Having said that, I can honestly say that Dan is as effective a TA as any I have had in my academic career.