I didn't know Hagrid's calendar moves at a different rate than us mortals. When Hagrid says he will upload homework or post your grades at a certain time, expect that to take maybe about ten times longer because us mortals' calendars somehow move at a faster speed than Hagrid's.
The review dated June 09, 2020 is probably the most accurate review of this class imo. In short: Blaer is a lovely, hilarious teddy bear that I want to befriend irl but he isn't the most outstanding Professor. I think that Blaer can choose better TAs tbh. There are several TAs who are frequently arriving to their OHs late/ forgetting to attend their own OHs. Furthermore, some of them don't bother to refresh their memory on the current topics/homework. That being said, Bo is the most amazing TA I've ever met! He taught me to approach Blaer's data structures class in a more lighthearted manner. I will miss Bo after this semester!
The class content is not hard. Professor Paul tends to extend the homework due date when most students starting on it later than his expectation. That's great since we were supposed to have 6 homework sets and now we have 5. The entire TAing system is a mess. When there are questions regarding clarification of the homework problems, TAs may give inconsistent answers. So the best thing to do is post the clarification question on Piazza directly. Homework problems are related to his lecture closely. And he sometimes will talk through the structure of some coding homework problems during class which is helpful. Exams are similar to homework but much easier.
This class is a hot mess. I don’t know if it is because it’s online or just his teaching style but the lectures are super confusing. It seems that he just talks and talks and expects the information to naturally stick. Even worse, the textbook makes no sense and is very dense. Being the only DS class offered this semester I had to take it, but definitely one of the most confusing classes I have taken so far.
Prof. Blaer is my favorite professor at Columbia and I loved taking Data Structures with him! His lectures always target the key points, and he’ll occasionally throw in a relevant joke or story. He’s also accommodating and receptive to feedback, and the curve is generous. Even if you aren’t pursuing a CS degree, I highly recommend taking Data Structures with him if you enjoyed 1004. My only complaint is that the Weiss textbook is subpar and should not be your primary resource in this class. The book is dense and reads more like an academic paper; it’s clogged with esoteric proofs and errors. Use Weiss for its source code, but refer to Cracking the Coding Interview, YouTube videos (I recommend the Back To Back SWE channel), and sites like GeeksforGeeks for mastering the concepts.
Prof Blaer is hilarious and a brilliant and caring teacher. He teaches the content efficiently, and every lecture is interspersed with his humor, especially when he reacts to the chats, and occasionally an anecdote. Given how dry the material has the potential to be, Prof Blaer makes attending class a super enjoyable experience and adds depth to the content. It's clear he cares about his students and about teaching. As with any CS class, it doesn't hurt to read some online resources about the things you're learning. I didn't read the textbook at all and was more or less fine, but sometimes he can gloss over the code for certain algorithms and it'll be up to you to learn it inside and out for the exams.
My only qualm is that he doesn't give out a week by week syllabus coverage. Other than that, Hagrid is great at breaking down and explaining abstract concepts and very patient with our questions. His anecdotes and side tangents are usually relevant, even if they aren't they really lighten the atmosphere.
The good: Blaer is nice, funny, approachable, and the curve is generous. The hw sets are also reasonable. The bad: Blaer is not a good lecturer. The currciuculum glosses over a lot of topics. The motivation behind the data structures are not explained. Honestly, data structures at Columbia is a joke. For a class that is very important to computer science, you will feel like you can do the problem sets and maybe get As, but will end the class thinking that you did not learn anything. Connections between the data structures are not explained. A lot of times I had knowledge of the topic behind explained, but sat there and saw him explain it for the first time and thought that if this was my first time being exposed to what he is saying, I wouldn't have grasped the material. Honestly, a very frustrating experience. Also the book is terrible; the code is filled with a lot bugs. Skip class and learn the material on your own. Also use problems sets from other universities to actually learn data structures. If you are doing the problem sets being assigned and think they are easy, that is because you are not learning actual data structures, just a bunch of disconnected programs. The theory part is better than the programming though. The course lacks the depth needed for cs.
Hagrid is a clear, knowledgeable, kind, and helpful professor. I admit the class felt a little easy because of how slow he went; I ended up not paying attention to most lectures and instead relied on the very excellent textbook by Weiss to get me through. The homeworks and tests were quite easy and fair. It's not a breeze though. You need to put in the time to understand these occasionally complex algorithms, and develop an intuition for them. If you know the basics of Java, the programming is a breeze. The written homeworks (i.e. exercises from the textbook) were occasionally difficult, but never completely stumped me. I never used them, but I've heard office hours and TAs are genuinely incredible.
Blaer is a nice guy who is not a great teacher. As a professor of a large lecture class, those two qualities are heightened: his jokes (though repetitive) can be stress-relieving, and if you have a background in java, his explanations are intriguing. However, if you don't have a background in java, Blaer is not very good at explaining simple concepts. He over-explains, confuses students, and gets distracted easily. I personally felt that my time was better spent on learning java online than learning in his class. One specific moment that comes to mind is Blaer's introduction to stacks. He went on an hour-long description of the intricacies of a stack, over-explaining it, when in all honesty it's a somewhat-simple java topic. All he really needed to say was "this is like a list, but instead of being able to access any node at any time, stacks follow the process of last-in first-out, like a tissue box or a pile of books." To be fair to Blaer, he is an incredibly nice professor who has the difficult job of teaching nearly 450 students in one large lecture class. I'm not sure anyone would have been able to do as good a job as online learning, especially in a class on Computer Science. My advice: take his class, but don't expect it to be great. Enjoy the comedic, positive side of Blaer, and deal with the negative sides of the class by learning online or reading the textbook.
If you have a decent amount of experience programming, this class will probably be a breeze but pay attention to the minutia of how Java works and especially to the hardware and theory lectures. If you've never programmed before, this is the class to start with. It might be rough, but pay attention and practice and you will succeed. There will be a temptation to slack off during lectures because you will have your laptop open and sometimes the content can seem a little slow. Do not do this. Paul Blaer is a lovely, hilarious, clear, concise, friendly, loud guy and an incredible teacher.
LOVE Paul Blaer!! Hands down my favorite Professor at Columbia so far. He is such a good teacher & amazing at explaining concepts. He is also incredibly nice & just a really genuine, down to earth person. As for the class itself: I loved it as well & was definitely one of my favorite classes at Columbia so far. I had actually not done any programming in Java for a few years, because I had taken AP CS in high school & skipped 1004, so it took me a bit of time to adjust and remember/relearn some things. The class was definitely challenging, but not too much and in a good way I think. I really learned a lot from the class & fell in love with CS again (I wasn't a CS major going into the class, but I am now). The TAs were also super super helpful & I highly recommend going to office hours to work on the assignments/study for tests (it's so much harder on your own trust me), and there are so many TAs so there are office hours like literally all the time which is so nice. This class is required for the CS major & minor, but I'd honestly recommend taking it even if you aren't majoring/minoring in CS. I would also highly recommend taking it when Blaer is teaching,if possible (he's like 1000x better than the other profs who teach it).
A witty, intelligent, and entertaining professor. He talks a bit fast at times but is always willing to repeat what he said if you ask. Assignments aren't too difficult but might take some time if you're 100% new to CS. If he hears people talking while he's lecturing he will ask what they are talking about or if a part of a song accidentally plays aloud he will ask what song it was – those moments definitely add some excitement to class. All in all a good teacher he seems to genuinely want to help his students succeed. Note: He gives out many A- but As are quite difficult to get.
Blaer is one of the best professors I ever had (and probably will ever have)!!! He is a well-organized lecturer and delivers the material in a very clear and succinct way. After taking this class, I decide to pursue CS further - one of the best course I have taken and my favorite class. 20/10 recommend!
By far the best professor I ever had. He speaks loudly and clear with a touch of wit. Most importantly, however, professor Blear knows how to explain the crap out of everything. I never walked out of his lecture asking myself, "What the hell was that?" He has a way of explaining the most difficult topics so a 5-year-old could understand. Thank you, Professor Blear!
ghedfklsdafjskdafnskadfnsdamf ghdfna ds
Great professor. As mentioned above, literally Hagrid. Has a booming voice that is easy to understand. Homework assignments are tough but fair. Exams are similar. Will not try to confuse you; go to class, read the book, and you'll be prepared for the exams.
Literally hagrid. 11/10 prof
Prof. Blaer really reached out to me in a personal way to make both Intro to CS and Data Structures meaningful courses for me. Blaer is an expert in the field of computer science (also, has special interests in robotics programming), speaks [loudly and] clearly during lectures, has a dry but relatable sense of humor, and is generally an approachable friendly human. tl;dr I highly recommend Blaer for CS major courses: 'Introduction to CS in Java' and 'Data Structures in Java'.
A standard introductory data structures class. Professor Blaer is pretty good, although his proofs could be a little more rigorous. The class felt slow to me, but maybe it was the right speed for an introductory class. The "Honors" nature of this class consisted of learning a little bit of Ocaml, which was interesting. My one complaint is the textbook: Weiss Data Structures and Algorithm Analysis in Java. It is a expensive and terrible book. Both the code and the proofs are lacking. The homeworks were easy, easier than the ones in 1007. The exams were fine.
I came into this class having taken a basic programming course in high school. It wasn't completely a breeze, but very doable and I came through with an A. With such a basic CS course, there is a lot of information out there if you get lost, and you should utilize it. The book is very useful, office hours are a big help, there are many resources online, and other students can be helpful with the homeworks if you don't know where to start. Blaer is a great professor - entertaining, funny, and makes things very clear even when they're difficult concepts to grasp. Having taken 1004 and 3134 with him, I'm sad to not have him as a professor next semester. Make sure that you read the book and get help early if you think you might need it - the concepts you'll learn build on each other so it's important to not get lost or it will take a while to get back on track (same with all CS courses, IMO). If you're new to CS, expect a struggle in the beginning since the most basic concepts are covered pretty quickly, but it will get easier for sure. Get started on the homework as early as you can and things will go well!
If you have no experience with Java, it's OK. The world is not going to end, but it won't be easy neither. I'm not a fan of reading but Big Java, Late Objects is one of the best books out there to learn Java. I gave my full attention to Blaer, but sometimes I would wonder off. But, it always came to taking some time to read the book and get the hang of it. Some of the answers of the Problem Sets are in the book itself. It's really important and useful that you read the book. Going to recitation doesn't make that much of a difference, unless you want to ask a question. And then again, they may even not answer them, but tell you to wait until Office Hours, since you're not the only one there. I had no experience with Java, got an A on the course. I am tech-savy, but it doesn't mean it's not achievable. Once you get the hang of it its pretty awesome! I do recommend taking the course with Paul. He is very funny and very lenient (we got our homework deadline extended like 3 times during the course). The problems sets are not that hard. Just make sure you take notes during class so that you can do your homework with them. Not an "easy A", but its not impossible to get an A.
tl;dr: This isn't a easy class if you have no compsci experience. However, if you insist on learning Java, Blaer's the best class to take. Problem sets are a bit of a struggle, exams are reasonable. Blaer's a fun guy. He's down-to-earth and isn't pretentious. Expect a lot of tangential stories though. There are a lot of TAs, and they're for the most part helpful. Recitation is usually staged more of an OH though, they take questions & don't really have a set plan. You must go to the first recitation--that's when they go through how to set up pico so you can actually code, and it's a million times easier seeing them do it in front of you than trying to read the tutorial. If you're like me and go into the class w/o knowing any compsci, you're going to spend the first few classes going "what the FUCK is going on." Be good about reviewing notes and reading the textbook though (and doing a lot of googling), and eventually you'll catch up. Before each exam he'll usually go over what will be tested. Make sure to go to at least one of the TA's review sessions--they'll usually cover something a little more comprehensively than Blaer. Exams are decent. Often I just read & reread the textbook and that was enough. The final covered way more content, but to make up for it it was also easier. Also, use Piazza religiously. Questions are almost immediately answered and any question you might have will probably already be up there. An A is definitely doable, no matter your past experience; you're going to have to put in some work & effort though.
If you have previous experience in coding, you most likely will not have trouble with this class. If this is your very first exposure to computer science, be forewarned that this is a challenging class. It will be much more rigorous than most likely any other introductory course in other fields. That being said, if you put in the effort, this class is very doable. You will be spending hours studying, as it requires learning both a language (java) and a general science (CS theory). If you do you not intend to be a computer science major, I would suggest taking a different course that involves coding (like a applications course that teaches Python with another subject, or a coding course for nonmajors). If you do take this course, be prepared to do a lot of googling & research on your own to figure out how Java works. It would really help you to do some basic tutorials to get the gist of it before you head into the first lecture. Blaer is an excellent professor, and his explanatory style is very clear and concise. He gets very distracted in his lectures, and it's pretty hilarious and adorable--which always made them a pleasure to attend. His expectations for tests and homeworks are always very clear. He does, however, have a tendency to underemphasize how difficult/important topics will be. For example, when listing topics to go over on test, if he mentions something in passing, you should know it pretty much backwards and forwards. Another example, the second to last homework we used a hashmaps, FileReaders, and PrinterWriters--all of which he probably talked about for like two seconds and never explained. Additionally, the TAs are beautiful, wonderful human beings. James Lin the head TA/(and I quote) "aspiring Little League Coach" is the best thing to happen to 1004 probably ever, and he was very encouraging and generally super kind in all his emails and communications. They are all very helpful, just be sure to find one who you get along with and remember their office hours (there are like a 11 TAs, and like always office hours). Piazza is also a great resource, with under 15 min response times. Usually all of my questions were already answered there before I even needed to ask anyone.
Definitely take this class. Blaer is incredible and hilarious. You don't really need to go to the lectures to understand this, especially because the book does a great job of explaining it but its good to go just to hear Blaer talk. The class is not too difficult and is a great introduction to Java, very interesting and I learned a lot. If you are on the fence about it you should for sure take the class. The homework assignments can be challenging sometimes but he gives you a ton of time to do them and there are so many TA's for this class that it makes everything very doable.
Professor Blaer is a great instructor. He is clear, able to command a large lecture hall without much trouble, and able to explain concepts in a fairly simple manner. I honestly don't understand why some people chose not to attend this class because I found the book to be average at explaining concepts, while I found Professor Blaer to be exceptional at explaining the material. I rarely referred to the book after his lectures because I either understood the material from his lecture, or was able to understand is after digesting my notes. I think this is a sign of a great teacher. Even in a 200+ person class, Blaer was able to captivate the room with his large voice and abundant personality. In addition, he managed to encourage student participation, which kept the class interactive and engaging. In addition, occasionally, Professor Blaer would drive home the importance of a particular concept with a story about his research, which usually involved a hilarious and catastrophic ending involving multi-ton robots ramming into buildings or almost running people over. Professor Blaer's exams are fairly straightforward and he essentially tells you about 50% of the exam, so these are fairly low stress endeavors. I found the final harder than the midterm, but still fairly straightforward. Not much to worry about here. My only complaint with Professor Blaer is an organizational complaint. He would usually claim he would post the HW by a certain date and note post it till 3 or 4 days afterwards. He also granted classwide extensions in unecesarry situations which made the last HW assigned and due during reading week, which was poor planning on his part. Lastly, I feel that the first 15 minutes of class, where students as clarification questions on the HW, is a waste of time. If he wrote his questions in a less ambiguous manner, and used this class time to teach more material, that would be more efficient. Apart from those organization things, I can't complain about this professor. I would recommend his class to anyone in a heartbeat.
Paul Blaer is an excellent professor. His lectures are generally very clear and straightforward. Don't hesitate to ask questions if you don't understand something, since he is very good at answering questions both in-class and through emails. Occasionally he'll tell a few stories about his research. Overall, a cool and funny guy who definitely deserves the nugget. The learning curve might be a bit steep in the beginning (it wasn't too bad for me, but some of my peers thought it was), but once you can get over that initial hump everything works itself out. Just be sure to start early on the programming assignments or you will have a terrible time (no joke). In contrast to the 1004 TAs, it seemed that the 3134 TAs were more lenient on the style of the code - if the code works, you get a 100% regardless of how ugly your code looks. TL;DR Excellent class. If you put in the work and pay attention in class, you will do well. Reviewer's grade: A
Took course over the summer. Very solid instructor, lectures were clear. Managed to make 3 hours of lecture bearable. Assignments really helped understand the material and were time-consuming, challenging, but not unmanageable. The reviews below apply. Why am I reviewing then, if what I've said above has already been said before? If you are taking THE SUMMER COURSE, expect to receive your final grade VERY LATE compared to the usual standards. Class ended in mid-August, and I received my grade early September, about 3-4 weeks after the end of the course. When I took Intro to MATlab with him during the year a long time ago, grading timeliness was never an issue at all, so I'm not sure where the disconnect lies.
One of the best and most helpful professors I've ever had. His class is not easy, but if you can get through his class you'll make it through cs. He presents the material clearly. Keeps the class engaged with humor while not coming across as a goofball. Do the assignments, don't expect perfection and read the text. Start early you won't finish projects if you start the night before. Recursion, writing compression and encryption algorithms, red/black trees, definitely a gateway to the more heavy duty programming classes. Much harder than the intro to cs classes. If you tap out of cs this is where you'll probably do it. But you shouldn't Prof. Blaer is very helpful. It might not necessarily lead to a high-flying gpa but its a great class to put on the books.
Best professor I've run into at Columbia so far. About me: Took AP Comp Sci in High School, had Art of Engineering the previous semester so I knew some rudimentary Matlab. I found his lectures really clear and if you take good notes you shouldn't find anything a surprise in the midterm or final. Also he uploads the things he ran in Matlab at the end of lecture so you see what you kinda covered during the lecture. Definitely go to class. No textbook required: i managed without it. You can also find a lot of the things on the Matlab website. Workload: He has 6 problem sets and drops one. You should not wait until the day before its due because some will take a bit of time. Start early and do a little each day and workload isn't bad at all. Also, he often extends the due date for things which is always a plus for you procrastinators but don't try to rely on that. Exams: He reviews what will be on it and reviews the exam after. Exams go for "breadth rather than depth." Exams weren't too difficult at all. You shouldn't have an awful time. He's also quite friendly and approachable. I found he answers emails in an appropriate amount of time. Overall I recommend this professor!
I took this class having little prior programming experience, having only learned a bit of MATLAB in Art of Engineering. For SEAS and particularly BME students who are required to take this class, having the background in MATLAB from AoE is pretty useful and allows you to slide through the first couple of weeks easily. However, as the class progresses you start discussing Big O notation, structs, object oriented programming, functions like varargin and varargout, and recursion, which were not mentioned in AoE but are really useful to know and require some more time. Later in the course when Blaer talks about histogramming images, you can again use some of the code you wrote in AoE in the homework for this class. Anyway, Blaer is a great professor. He's easily approachable immediately after class or in his office hours. Blaer holds review sessions before the midterm and final, which are really helpful. He tells you what he's going to test over, explains challenging concepts, and in some cases tells you the exact questions. The best advice I can give is to go to class, because Blaer's teaching really clarifies the concepts asked about in the homework. Often you will be able to modify code he wrote in class to solve homework problems. Furthermore, nobody usually goes to TA office hours, but they're really helpful if you're having trouble with a particular problem on the homework, even if you have to go to the crowded Comp. Sci. lounge to utilize them. Other notes: *You don't need the textbook for this class. Just take good class notes or get them from someone else. Blaer also posts all the code he writes on his website. *Also, you don't need any calculus for this course, but any coding experience will help. *Just go to class. It makes everything easier... Blaer always asks if people have questions at the beginning of class. *Blaer also tells funny stories about things like cat whiskers and building robots, another reason to attend class.
I'm optimistically assuming that the computer science department has the sense to never let Professor Blaer teach this class again, in which case this review doesn't really serve much of a purpose. However, given the finite probability that computer science continues to show the lack of judgment that they showed in allowing him to teach COMS 1007 this past summer, I feel justified in writing this review. I just got reminded this morning that I took COMS 1007 with Professor Blaer this past summer when I got an email that my grade arrived. The date of the final exam was Thursday August 9th. I had been checking Courseworks weekly since the end of the course, and this is the first time that I saw the grades posted for assignments 3-4. I am currently enrolled in COMS 3137 and have completed the first two assignments prior to receiving my grades for the last two assignments and my final grade from COMS 1007. There is still no grade posted on Courseworks for the final exam, and given that combined with the discrepancy between how well I did in the course and how poorly I felt I did on the final, I'm wondering if he even graded and/or counted the final exam. This might sound like an outlandish accusation, but the classmates who I've talked to are all speculating the same idea. Professor Blaer told us during the final lecture, on Tuesday August 7th, that he was setting the following Monday as the grading deadline for the TAs, and therefore that we should expect to know our final grades by the Tuesday of that week. We were never contacted with notification of any delay. At first I thought it was just me when my grade wasn't posted all summer, but then I got to COMS 3137 and found that several of my classmates who were in the summer class had not received their grades either, and we all had contacted him several times via email, telephone, and direct office visits. Professor Blaer didn't respond to most of the emails or telephone calls, and he wasn't in his office when most people arrived. However, whenever one of us did hear from him, he said that the grades would be up "by the end of the day." The lack of feedback and organization in this class was representative of the fact that the concern for students' learning was absent, which is a shame. After all, isn't that the point of any class? Professor Blaer's lectures were fine. They weren't amazing, but they were fine. However, in teaching a class in computer science, organization and feedback are at least as important as the lectures. I'm my personal opinion, they're far more important because most of the true learning comes from working through and receiving feedback on assignments.
I honestly wanted to like this class, and expected to after reading several positive reviews. Maybe there is an inherent flaw in teaching a class like this during the summer, but I suspect that the fatal flaw of this class was that it wasn't well planned. Nonetheless, as I read the other reviews of Professor Blaer, I am suspecting that he might be better at implementing a course during the fall or spring than during the summer. It seemed that this entire class was planned as an afterthought, and the class seemed to operate under principles that I previously thought violated those of learning computer science. I thought computer science was about thoroughly understanding concepts and creatively applying them to solving problems. I also thought that lectures were a supplementary feature to the learning process, and that the most important part of the learning came when working through assignments. Finally, I was under the impression that computer science is a subject one couldn't cram for, and the way to learn is through practice. I'm hoping that I was right about all this, and that the only reason I am questioning it now is due to the faulty implementation of this course. I went into this class with the expectation exams should be doable if one is able to figure out the homework assignments on your own. After all, the purpose of said exams are to ensure that people truly understand the material and don't get rewarded with a top grade for getting through the assignments without fully understanding them (for example, by getting excessive TA help or copying from other students). However, that really wasn't the case in this course. The exams tested concepts and syntax that were not covered in the assignments, or that were covered in assignments that weren't assigned until after the exam. (For example, the first time we were ever asked to write a program using anonymous classes was during the midterm exam. These is nothing inherently difficult about using anonymous classes in Java, as it is just a quirky syntax to get used to. However, this straightforward exam problem was significantly more challenging due to the fact that we had never been asked to implement an anonymous class on the computer prior to the exam.) To be fair, he did teach the concepts in lecture, but it is very difficult (for most people) to learn computer science enough to quickly apply it exclusively through lectures. Another expectation I had in taking a computer science class over the summer was that I'd be drinking from the fire hose. I thought I'd be working hard and losing sleep to finish assignments on time. The only time I truly found myself working hard and losing sleep to get the task done in the time allotted was when cramming for exams. There were only four homework assignments, each of which consisted of a written portion and a programming portion. The content of these assignments was fair. They were time consuming (except for the first one), but completely reasonable in scope. Nothing we were required to do went beyond the concepts discussed in class, yet I still found myself learning a good deal while working through these assignments. That being said, I would've liked another assignment or two in order to thoroughly learn the material that was covered on exams but not on the projects, as well as to lessen the weight of each assignment on our grade. Moreover, he extended the deadline for every assignment, which was great for the students who procrastinated. However, for those of us who started the assignments when they were released, these extensions were more of a punishment because they were often granted after we had already allocated significant time to completing the assignment prior to the original deadline. Further, he did not make the new assignment available until the extended due date of the previous one (despite promising to make them available earlier on a few occasions). Due to the poor timing of assignments, the final assignments ended up being due the midnight prior to the final exam. Feedback was another story. Initially there was a single grader for the class, and as a result we did not receive feedback on the first homework assignment until the middle of the fourth week of class. At that point, a new grader was hired. The class ended last night and we have currently received feedback on two of our four homework assignments. It also took two weeks to hand back the midterm exam in class. To be fair, the instructor admitted that the lack of TA help was a problem the course was facing. However, these delays were more than just annoying: they caused many students to be penalized multiple times for the same mistake. Lectures largely consisted of presentation of the textbook author's slides, from the book "Object-Oriented Design and Patterns" by Cay Horstmann, and occasionally he'd present additional examples of his own. These lectures were fine, but not exactly easy to pay attention to for three hours. Easy or not, paying attention was important, as many points he made during lecture had a tendency to show up on exams despite not appearing in the assignments nor being emphasized in the textbook. When the instructor presented his own code, there was often a several day delay between the presentation of the code and the uploading of this code to the course website, which made at least one of the assignments much more difficult than it needed to be. If you are planning to take this offering in the future, make sure you are very confident in your ability to learn computer science quickly and without much practice. Otherwise, you will probably be sensitive to the problems with the course.
When I registered for MATLAB class, I was inspired by good reviews on Culpa. However, in my experience not all of them turned to be true. If you are really new to programming, there is no way you can get an easy A in this class. Though, you will not fail if you show your effort. Pr. Blaer is relativly an easy grader, but he grades only part of midterm and final, TAs do the rest. So go to his office hours and make sure he remembers your face out of other 100 people. I am in no way saying it to discourage you, I learned a great deal in this class. However, even after putting increadible amount of time and effort, I can't say "I can programm now". Peace of advise, do yourself a favor and find homeworks from previous semesters or keep a friend who knows programming,then you easily will be close to the high average of 84%. I think problem is in description of this course that has no prerequisites and "assume no prior knowledge in programming", you need to know a great deal of Calculus and MUST understand basic programming for this class. Good luck!
Most teacher I've had at this school thus far have been subpar (*SHITTY*). Blaer is very interesting and funny! He makes everything very understandable and the TAs are very accessible over e-mail. If you get how to do the homeworks you should have a good grasp of everything. The homeworks can take a bit, but they aren't intimidating. Seriously, just pay attention in class and write down everything he says. Should be an easy A if you dedicate some work to it! Blaer was awesome! It feels so weird that I can actually do programming! WA THE FUUUUH?!
Most of what I have to say about this class has been said: Blaer is a smart and funny teacher who does a great job explaining abstract concepts and making sure you understand them. He's accessible and fun to talk to, especially if you find him during office hours and/or not surrounded by a hoard of undergrads. He also has an amazing twitter that isn't updated often enough. You can google it easily. Not sure what happened during my semester of 3137, but it seems like we had less GUI than previous classes. If that's just an anomaly, then, er, too bad... but I thought I would give CULPA a head's up, since it was a big source of pain and anguish for most of the reviewers below. In other words, take this class with Blaer!
Paul Blaer is one of the best professors I've had at Columbia. His ability to clearly present course material and actually make you learn something is unparalleled. His lectures are very straightforward and well-paced. He will essentially analyze and go through each data structure/algorithm step-by-step, making sure the class is with him as he goes along. He's also a pretty funny guy and will sometimes go on tangents, but they were always CS-related and will be interesting and beneficial to you if you are a CS major (i.e., go to lecture! You don't know what you'll miss). He is a very accessible guy and friendly one-on-one, so although he's intimidating at first, don't be afraid to go to office hours or ask questions in class. A misguided reviewer for this course will have you believe that taking AP Computer Science AB will make this course a breeze. This is NOT the case. I have taken the AB course and I still learned a wealth of information from Blaer, not to mention that most of the material after the midterm was not covered in AB, including perhaps the most important topic, graph theory. Each homework assignment is divided into two parts: theory and programming. People I know in this class complained about the GUI. Yes, there is a lot of GUI, so be prepared--in fact, I'd say the GUI is about 50% of each programming assignment, which isn't necessarily a good thing, but it probably builds character or something. However, they tend to be fairly simple, such as drawing dots on a grid or drawing binary trees (protip: if you abstract your first tree GUI interface well enough, you can reuse it later on for at least one more assignment). However, there is just as much theory as there is GUI, and the theory is much more challenging than simply looking up how a JComponent works. Most theory questions are taken from the book and definitely require a bit of thought before you arrive at a solution. Overall, if you have the option of taking this course with Blaer, don't wait. Take it with him. You'll learn data structures, you'll learn algorithms, you'll probably write some painful GUI code that you don't want to, but you'll come away a better computer science student.
This course is more aptly titled "COMS W3137: Java GUI and Data Structures," because really, data structures weren't as prominent as the name of the course suggests. Overall, a terrible experience that I'm glad I'm over with. Prof. Blaer, in his lecturing ability, isn't to blame for why I hated this class so much. He's very clear in explaining the material and a funny guy overall. He was able to keep me awake even after I pulled an all-nighter working on the first assignment (see below). The material is too sparse to deserve an entire semester. For anyone who has taken AP Computer Science AB (not me, and for future CULPA readers, I guess not you, either), the actual data structures covered would already be second-nature, and the associated algorithms would be simple. I stopped going to lectures really early on in the semester since each week covered only roughly five pages of the textbook. The homeworks were absolutely ridiculous. Most of the programming in the homework assignments didn't involve implementing the data structures (instead, we were just allowed to steal the source code from the textbook's website), but instead revolved around Java GUIs. All but one of the assignments had uninteresting programs for us to code (unsurprisingly, that exception was the one that involved the least fiddling around with GUIs) and in general took quite awhile of experimentation. Furthermore, the TAs were incredibly slow at grading the assignments. The 60-odd people's assignments were divided among four TAs (the remaining TA was solely recitation instructor) but would take somewhere between 3-4 weeks to get back to you. Of course, you could just say, "oh, each assignment takes a long time to grade," but the fact that they managed to grade all the exams within six hours after the midterm demonstrates that they can grade quickly, but simply choose not to. On the bright side, code didn't have to be as strictly formatted and documented as it did in 1007... and... I'm done with this course! (and I pity all you future CS majors that have to take this class)
I'm no compsci genius, but an A in this class wouldn't have been much more trouble from the A- I got. He's a really good teacher, and even though waking up to get to a 9 am lecture was hard... I learned something every time I went (and didn't fall asleep). He'll walk you through pretty much everything and is really nice if you have questions- he was probably one of the friendliest professors I've ever had. Matlab itself isn't very hard, and there are TONS of resources on the internet to help you if you have trouble... In all I would definitely recommend this professor and this class. As long as you're resourceful and willing to put in a little bit of effort, this class will be a breeze.
I had never taken a comp sci course before, and let's just say it was rough. Homeworks took me roughly 10-15 hours to complete (boy did I hate the computer labs in Hartley and Mudd after this course), granted I usually did them the weekend before they were due, but it was painful. Professor Blaer moves very quickly in his lectures, flipping back and forth between Editor and Workspace so it was often difficult to write down what he had typed before he switched windows. He would also go back into code and edit what he had originally to create a new example, easy to do on a computer but almost impossible to write down the whole code again with the change (usually very small but really important to his point) by hand before he switched back to the workspace. I went to every lecture but got lost during histograms and plotting and never really recovered until the last homework. I still don't understand the whole image-histograms-plotting thing, which bodes well for the final tomorrow. An unfortunate fact about matlab; not many people take it unless they are comp sci majors or bme kids (or need to fill the comp sci requirement for seas like me), so help around campus is limited. My advice? If you've never taken comp sci before then find yourself a study/homework buddy in either your class or as an upperclassmen who has taken matlab before. Go to lecture. Get used to the idea of spending hours at a time in the computer lab (bring a sweatshirt, it gets cold in mudd). If you get to a point in the homework where you just can't handle it anymore, it's ok to just turn it in (especially if it's past 3am). Ask for help if you've sat in front of the computer for more than an hour without making any progress. Seriously. It's not healthy. Good luck.
As one of those students NOT coming from a strong CS background, I just have to put it out there that each homework assignment took me roughly 10-15 hours to complete. As for Prof. Blaer, I thought the textbook was just as good a teacher as he was, since he mostly repeated what was in there with some additional reinforcement and examples. He is fairly accessible and does a decent job of presenting the material, but ultimately Java is something you learn mostly by yourself. I certainly learned a lot through the programming assignments. Overall I would recommend him just because he's so helpful and cares about the students doing well.
As one of the students that has "practically taken this course before" mentioned below, I should preface this review by noting that if you have any kind of Java experience beyond the AP CS AB level, you should really try to test out of it. I asked about skipping the class and was strongly discouraged by everybody in the department that I talked to; in the end, I think that was a mistake. That being said, a class that by all rights should have been an unbearable repetition of things I'd already taught myself turned out to be a reasonably good experience. Blaer is a really engaging lecturer and an all-around smart, friendly guy -- he was happy to entertain various questions I had about side projects totally unrelated to the course material, and is really accessible outside of class. The homework turns out to be enjoyable as well -- there's enough freedom and flexibility in the assignments, particularly the middle few, that you can have fun playing around within the constraints. All in all, I highly recommend Blaer (and would happily take any other course he teaches), but be wary of signing up for 1007 if you come from a CS background.
Professor Blaer seems to know anything and everything there is to know about the Java programming language, and practically lives and breathes CS. He's always happy to explain the finer points of Computer Science to us. His office hours, immediately after class, are held at an unusually convenient time for most students and even if it takes him more time than he thought it would, we rarely go away with our questions unanswered. In addition to holding his posted office hours, he vigilantly monitors the course discussion board. His board posts are essential (and appreciated) given the difficulty of his assignments. The 6 assignments can be quite time-intensive for people who are less than overqualified, including top students from the recommended prerequisite course (COMS W1004). A substantial number of students have a much stronger background than this, and some have practically taken COMS W1007 beforehand. These may be the people who would call the workload "not too bad." The rest of us just get a lot of programming practice. Fortunately, the grading and grading curve are generous. The median grade is usually B+, and this semester it might be A-. Lectures are understandable and thorough. Professor Blaer sometimes talks so quickly that note taking becomes a bit difficult, but most of the material is from the textbook anyway. The textbook, _Object-Oriented Design and Patterns_ by Cay Horstmann, explains concepts reasonably clearly but provides inexcusably buggy solutions to exercises. Exams are long and information-intensive, but manageable if you've studied. Professor Blaer LOVES to make fun of students who procrastinate (he never singles out individual people but talks about Columbia students as a group). He is also merciful toward those who do procrastinate, because of his liberal extension policy. Sometimes he says things about the average student's level of organization (i.e. our lack thereof) that aren't true. I hope his lectures get put on CVN because they are so good, but those parts are cut because they reflect badly on Columbia University and are a lie. Most students are doing well this semester, and our organizational skills are one of the reasons. I highly recommend this course, but only if a student has taken COMS W1004 or the equivalent beforehand. Otherwise they might get buried in coursework.
Blaer is amazing! I was convinced that I would hate computer science and that I would probably do poorly in it. Thinking that MATLAB would be a practical way for someone interested in research to fulfill the SEAS programming requirement, I was less than enthusiastic at first about the course. However, Blaer made the course interesting and I loved it- probably my favorite course last semester. I did the work (it wasn't that much) and got an A. I highly recommend taking comp sci with paul blaer--he is engaging, funny, a really nice guy, and a great instructor to boot! I would consider being a cs major after this course (except of course that the fact that I am a sophomore and I took 1005 instead of 1004 makes this an impossibility).
Paul Blaer is a master in his field. He knows exactly what he is doing, and can answer damn near any question you can come up with. The homework assignments are not extremely difficult, but do take time and actual mastery of the subject. He makes himself very available if you need help, and has knowledge of Computer Science that extends far beyond Java. The workload is not serious, and you do not really need to attend lecture if you're keeping up with the book. However, it doesn't hurt your grade at all to attend lecture, as he often gives clarification on confusing topics and a myriad of extra information which could help you out on the midterm and final.
To be honest I didn't go to class very often but when I went I found his lectures very clear and engaging. The subject matter was relatively easy. I think this is the least rigorous choice for the SEAS computer science requirement. Matlab is incredibly useful so if you know you don't want to pursue computer science then you should take this class.