I took the class in Fall 2018. While professor Allen does follow the slides most of the times, he will always give some additional information with it. If you ask him any doubts he is always able to clear those. His course is well organized with pre-determined readings. The labs are interesting if you are a noob to ROS and Robotics, and covered a diverse range of topics. You get to code Path Planning and basic computer vision etc. It is an interesting course for a beginner. He also spends some lectures to get you started with ROS and OpenCV. I enjoyed this course a lot.
Peter Allen is definitely a smart dude. Half of the robotics material published by Columbia was written by him. However, this dude cannot teach a class because he just doesn't care. He is extremely condescending and sarcastic and treats students as if they are below him. On Piazza, one student asked a simple question regarding the grading of the exam and he responds "Have you even seen your grading yet..I think not!" Class is spent by going over videos of robots, dissections and reading through the slides in class verbatim. It's not too big of a minus since I feel like most of the professors at Columbia do the same, however his slides are unnecessarily long and are packed with irrelevant information. The midterm is easy (avg. ~75-80) as he was obviously too lazy to change the questions from his sample midterm (that he only hands out in class), but the second midterm goes so in-depth in material you once thought was irrelevant the average turned out to be 30 points lower (avg. ~55-60). He also was too lazy to give out a sheet containing answers to the "practice" midterm, which was nothing like the second midterm. In other words, the exams are highly unpredictable so try to memorize every single thing you see on the slides. The homeworks require you to use the ROS software which is actually quite glitchy and can get frustrating at times. There is not a lot of guidance for these homeworks, so good luck hacking your way through it!
5th year CE major here. The assignments are very interesting, but LONG and often frustrating. Easily one of the most time-consuming courses I’ve taken. The course no longer deals with programming real robots (thank god), so it's all simulation. MAC USERS BEWARE: You will need to purchase the Parallels software (about $40) in order to run the Linux VM for ROS; Virtual Box is not nearly powerful enough to handle the simulation. The lectures do not help at all with the homework (its basically sink or swim with learning ROS and RViz), but the lecture material is what you will be tested on. I have to say, I’ve never had a professor who was as mean-spirited and condescending as Peter Allen. I don’t know why he is such a negative man; my only guess is that he is in the middle of a nasty divorce. He doesn’t care about the students, and has displayed astonishingly little concern for whether or not they succeed. He actively discourages questions by mocking or snapping at the asker. He trash-talks the TAs when they're not in the room. I want to like this class, but Allen's attitude really detracts from it; if he were a little bit more pleasant and helpful, it would make the class worlds better.
Professor Allen is a terrible professor and an all around bad human being. He is uninterested in teaching, uncaring about students, and unpleasant to interact with. If you take any class with him you will learn very little and regret every second of it.
Disclaimer: In the progression of my CS courses at Columbia, I was supposed to have taken this class two semesters ago, so when I started this course I had already taught myself/had experience with a lot of the data structures in the course curriculum, so my perspective of the material may be a little skewed. BUT WITH THAT SAID... I strongly disliked this course with Allen for two reasons: 1) A good chunk of the homework was focused on Java GUI's as opposed to actual data structures. There was minimal to no assistance in constructing these GUI's, which meant you had to spend large chunks of time scanning tedious API documentation to try to figure out how to do things, instead of spending time actually learning and implementing the data structures. Also, I found this frustrating because Java GUI's are increasingly becoming an antiquated form of user interface in industry, which spending the time to teach them to myself seem irrelevant. In my opinion, it would make a lot more sense to include extensive implementation of Java GUI's in W1007. 2) Professor Allen is actually condescending to students. There were numerous Piazza posts where students would ask questions that were fairly reasonable and his responses would be incredibly and unnecessarily snarky (i.e. Student: "Can we assume ___ about problem X?" Professor: "Can we assume gravity exists?"). In class, this attitude discouraged students from answering/asking questions. Something I love/hated about the class was that his lectures were literally him reading through his class notes, which were posted on the course website. This meant that going to class always felt like a waste of time (you could literally not go and just read the slides and be fine), which was simultaneously awesome and terrible. Overall, I do feel like my knowledge of data structures has improved since the beginning of the course (specifically with Trees and Graphs), but if I could do it again, I would definitely take this course with someone else.
The homeworks are relatively easy, the projects are "fun" (in that nerdy way that CS kids love), the classes are not really necessary to go to after the linear algebra sections have been covered, but the midterm and final are kind of bullshit. Allen only gives you a general overview of what might be on it, without a practice test, and the questions on it are weird; often testing cursory knowledge of subjects not covered in any assignment or project. It felt like the final was "trying" to be harder than the rest of the class just to achieve a nice grading curve. That said, here are the pros: You get to program for an actual, real-world machine, which is something you don't really get to do in many other classes. It's a different kind of debugging when you have to find out how slippery a certain floor is and factor that into your motion calculations to account for drift. You also get to use linear algebra in a very practical way, (It really cemented a lot of the fundamentals I had only weakly grasped after taking intro to Linear Algebra). Lastly, it also serves as an intro to Computer Vision as well, some of the later homework assignments require you to mount a camera on the robot and do image processing to solve certain puzzles. In summary, it's a class that kind of feels like an easy-A class despite having a respectable work-load (the projects) and arbitrarily difficult exams. Allen is a lenient grader for the projects, but not for the midterms. This is definitely an "application" class, not really a "theory" class. Take it if programming a Roomba sounds like something you would like to do; for all its flaws I enjoyed it well enough.
Great prof. Excellent course notes, straightforward assignments. He's on top of his TAs to get stuff back quickly. The downside to this is that they are VERY sloppy. I was docked a ton of points (that they never responded to emails, or in office hours to discuss) for stuff they got wrong. Allen is fabulous, though. Really great at explaining the concepts, and he brought in some awesome lecturers in robotics. Overall, this speaks to his wish to get his students excited about computer science. Note: He's really, really arrogant (and really, really accomplished, but that doesn't excuse it). I've seen him tear students apart when they ask him clarification questions on homework instructions. (thankfully the TAs used piazza, so you could, and thankfully I did, do this anonymously).
Peter Allen is a really nice guy. He's more normal than most comp-sci profs, probably because he went to Brown and was an Econ major before he found his calling in CS. He's a little disorganized, and his PDF packets are kind of annoying, but at least they're all available on his site. Some of the assignments are needlessly a pain in the ass, but they do teach you the material in a more direct way than, say, for example: object-oriented programming with an awful PhD student. (Only take OOP with Kender.) I would stress that his lectures are not the most helpful thing in the world, but he is supportive and has a sense of humor, which is always nice. I recommend this class, but prepare to slog through terrible problem sets, especially the last one.
First of all, the co-requisite of Discrete Math is not necessary in order to understand the materials in this class. In fact, we went over most of the graphs stuff in this class before Discrete Math. So don't worry about taking both classes at the same time, The class covers the basic data structures and the algorithms associated with them. Most of the codes are provided by the textbook, so you don't really have to memorize how to write them, but you do need to know how they work. Most of the questions on the test and the hw require you to apply an algorithm to a set of data and show their results. The materials covered are not too difficult, and as long as you can think abstractly and understand what you are trying to do, you'll be fine. Professor Allen is an excellent lecturer who presents the materials very clearly. He uses powerpoints for the lectures and every time we get to some code, he would stops and demonstrate how it worked on the blackboard. His lectures notes which he posts online are concise and super helpful. The lecture notes extract the things you need to know from the textbook without going into excessive details and get boring, as the textbook tends to do. In fact, I almost never had to use the book other than to do the assignment from the back of each chapter. You can get by on his notes alone without going to class or read the book, but I highly recommend you to attend the lectures when possible because he actually explains everything in details. The homework assignments were not difficult. There's usually a couple of questions from the back of the chapters and 1 or 2 programming questions that'll take you about 3 to 6 hours if you know what you are doing and maybe 10 hours if you are really lost or have little experience in programming. The programming assignments mostly involved implementing the psudocodes he gave in class and put it in a real use, which I really enjoyed. In summary, it's a (surprisingly) light class with a great lecturer and awesome notes. I highly recommend taking the class with Allen if you have the chance.
I took Data Structures & Algorithms during the Fall 2009 semester, which was taught by Peter Allen. The Course: 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. The Professor: 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. The TAs: 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.
Let's not mince words here: Peter Allen is an asshole. He makes fun of you when you ask questions, he ridicules you when you answer questions, he (no joke) has been known to flame his own mailing list. At the beginning of the semester, all the nastiness really bothered me. "How," I asked, "am I supposed to enjoy a class where the professor so clearly hates his students and thinks he's far too important to teach?" Then I got over myself. Should you find yourself in the position I was in, you should really, really try to get over yourself. Prof. Allen's lack of basic human decency is matched only by his supreme competence as an instructor -- his course notes are great, his lectures are better. By the end of the semester, I actually looked forward to class. And when the third person sends out an email to the mailing list asking for some hand-holding on the extra credit, and when the tenth person asks when the next homework assignment is due, you begin to understand why Prof. Allen despises undergraduates: it's because we are, by and large, despicable creatures. So suck it up and appreciate your opportunity to learn from the master.
As an applied math major taking CS classes for fun, I found this class to be extremely simple. Prof. Allen is a very good lecturer, keeping the lectures funny and engaging. He prints out enough hardcopies of the handouts on each topic for every person in the class, which I found helpful. The lectures usually contains a bit of theory, then algorithm, and he goes over each algorithm in detail with graphical / code examples. Although going to recitation is encouraged, it's most likely a waste of time as I never went and never had any problem with any of the homeworks. The midterm and finals are extremely easy. Even as a person who's not very good at CS, I managed to score 1 standard deviation above the average in a class designed for CS majors.
I had Prof. Allen's class right after Prof. Rocco Servedio's class. The contrast could not have been clearer -- while Rocco is a clear and competent lecturer who is quick on his feet and always able to answer questions, Allen is a bumbling, incompetent waste of time. He was never once able to answer any questions posed to him in a way that suggested he understood either the question or even the material. His lectures were disorganized, rambling, and unintuitive. He is far and away the worst professor I have ever had at Columbia Computer Science (and perhaps tied for worst ever at Columbia).
The good: Peter Allen is a very talented lecturer. His handouts are spectacular. They present each topic very simply and completely, making reading the horrendously boring textbook almost completely unnecessary. Even though sometimes the material is a bit dry, Prof. Allen manages to keep the lectures interesting and bearable. I don't know what other reviewers are talking about when they say he humiliates students. I never remember him disparaging any student. The bad: He did have a tendency to misunderstand students' questions and assume they were asking simpler questions than they meant to, but he was always patient and treated all questions as worthy of asking. Also, get comfortable when he starts to walk through an example, because he'll take you through the WHOLE thing, even if the process is the same in the first 10% of the example as it is in the last 90%. If you take this class, be prepared to work. This was the most work I've ever done for a class. Ever. The theory questions are usually reasonable, but the programming is killer. It wasn't uncommon for me to spend my entire weekend working on an assignment (even with no procrastinating). There's a lot of work, but I think it was worth it because after you walk out of that class, you will be extremely well prepared for programming in Java and comfortable with the data structures discussed in class. If you're serious about CS and can handle a hardcore workload, take this class.
First off, I took Data Structures with the guy too. Everyone who wrote a bad review of this guy is rather stupid. Swing interfaces are key parts of every assignment involving Java after Data Structures. Furthermore, copying code to create the data structures is fine - it's a matter of using them - why do you think the class is considered a difficult one for many? Because they don't know how to copy properly? But I digress. Robotics is Allen's specialty, and he clearly shows he knows what he's talking about. The class has some rather cool aspects about it, including the use of a robot simulator. You actually apply concepts from linear algebra to something. Furthermore, it gives a solid background to what kinds of projects are going on in robotics. Some of it is basic at first, but it gets better as it progresses.
No one sums up the CS department's mediocrity more than Peter Allen. Tough, challenging, and rewarding? PLEASE... He may not take any bullshit, but he hands it out in huge buckets by making his students write Swing interfaces for every assignment. So when do you write the actual *data structures and algorithms*? You don't -- you copy the textbook's code, then stay up 'till 5am writing 5000 lines of JFrames and JOptionPanes. I've tutored literally dozens of Allen's 3137 students, and the only thing they seem to have learned from him was bad coding style. It's not all his fault -- if the CS dep't is going to use Java, then 1007 has to teach the basics of OOP. Yet almost no students come into 3137 understanding the basic concepts of abstraction, and Allen goes out of his way to make the situation worse. For example, here's one absolute law: Keep the data structures and the GUI in different classes! If Allen were really a no-BS kinda guy, he'd give zero credit for anyone who put Swing code in their Stack, BST, etc. classes. As it is, his 3137 is a lesson in producing awful hacks. Laying your code out in a clean, maintainable way is a THOUSAND TIMES more important than blindly adding Swing objects to an ADT class until something appears on the screen. But Allen requires none of the former and oodles of the latter. This the kind of class that makes people hate CS. Compare it to a really successful and challenging course, like MIT's 6.001 or even Gross's Discrete Math here, and you see how we're shortchanging our students and turning potentially talented programmers away from CS for life. This course is worse than useless. Yes, Allen is a contemptuous waste of time, but he's just a symptom of the stale status quo in Columbia's CS department.
Professor Allen is an extremely lucid and straightforward lecturer, and the material he teaches is extremely valuable. I had no problems understanding material after going to classes. He taught the class for CVN students as well, and even viewing his lectures on video was pretty useful. He does berate students a little bit, but usually if they are acting irresponsibly stupid.
Professor Allen will not hold your hand, he will not take any shit, and he will teach you data structures. His lectures are clear, concise, and will prepare you for the homeworks. At times, he practically walked us through how to do a given assignment. He is also apparently a huge fan of GUIs, which while will be a wonderful skill to have in the future, will likely be a royal pain in your ass and has little to so with the subject matter. As with most CS programming courses, the difficulty of this class will vary with your skill in coding coming into the course. Prof Allen does not really curve, and if he did it didn't affect my grade much. He did drop the lowest HW, which was predictable as he repeatedly mentioned that you could afford to mess up one HW. Allen has little patience for BS, so don't ask him stupid questions, don't stand in front of the room, even to grab a handout, when he's lecturing, and don't tell him he isn't teaching the material we need to do the HW -- he practically tore one student apart when he was asked for techniques used for hasing. The student felt we weren't given enough options to meet his desired # of collisions, and Prof. Allen practically walked him through all the examples in the book. Come to find an email in all our mailboxes later that his required max number of collisions was off by a factor of 3. Oops. Basically, if you start early on the assignments, this class will be very rewarding and will help you progress greatly as a coder. Allen makes learning the material incredibly easy, as his lectures are so easy to listen to. But if 1007 was difficult for you and you're really not getting Java, start every assignment the day you get it and hope it all starts clicking soon. Or try a department that's a little less sink or swim
Although he may seem unfriendly sometimes he's really not. At least when I went to his office hours, he was really nice. I asked for an extension because I was sick and he didn't even ask for a reason but only ask me to email him to remind him about it. I don't really remember him being mean to any students except a time when a couple of students were standing right in front of him when he was lecturing so he asked them to walk away so he could teach. I don't think that was undeserved. Otherwise I think it's just his lecture style to sometimes be sarcastic and blunt. He doesn't bullshit and he doesn't direct his attitude to students. Therefore so far as I'm concerned he's a great teacher. The TAs, though, were somewhat irresponsive. They generally did a really fine job answering questions about the materials. But with administrative stuff like grading policies and grade statistics, they always told us to ask another TA who would tell us to ask another one, or simply ignore our questions altogether.
Prof. Allen's lectures are clear, concise, and informative. He is a wonderful professor, and gives off a tough attitude but is really a good guy when push comes to shove. He had a lot of pity on my class by making the homeworks easier when he realized we messed up the first two. Highly recommended class.
Like asking questions in class? Better be prepared to withstand a barrage of embarrasment from Peter Allen. I've witnessed unbelievable acts of contempt from him in class, in which he dressed down students whose questions he apparently did not feel were good ones. If you're forced to take his class, do yourself a favor: stay home and learn from the textbook. You'll learn more and the book doesn't try to embarass you.
I've been both a student and ta in prof. allen's class. 1) He has a dry and cutting sense of humor, but certainly does not target or seek to silence students. It's more on the order of tough love. 2) The grading is fair. I've ta'd a number of classes where profs have some nebulous grading standard. Prof. Allen lays it out for the ta's: this is how it's to be done. period. I wasn't one of his best students, certainly, but improved with age. His is one of the most memorable classes and important classes I ever took. Perhaps, the best I took at columbia. This is why I specifically asked to ta for him. Be prepared to work. however, the more you put in, the more you'll take from it. (this goes for ta'ing for him as well).
He's generally an interesting lecturer, but outside of class he can come across as quite pompous. On ocassions he makes students feel unwelcome in his office hours.