Computer Science · Columbia University
You would be wise to take this class. Professor Ross is very well-acquainted with the material. Lectures are well-organized and follow the textbook. The material is pretty tough, but you are given the tools to learn it. Topics covered are extremely relevant to software engineering today. Professor Ross is a slightly awkward guy who definitely doesn't play favorites. I'm not sure he particularly likes any students. One TA was a star. His name was Wangda and his response time on Piazza was incredible. The other TAs were okay. They tended to give away pset answers rather than help. Bonus tip: you should probably buy the textbook because the PDF online has lots of errors. The Eastern/Indian knockoff edition is only $30. Bonus bonus tip: Ross video records all his lectures. But you can't access them unless you go sit in the stinky TA room with a TA and watch them.
As you can read on CULPA and the SEAS Oracle, students who have taken this course generally have lots of positive things to say about it, most of which are absolutely true. However, because the course places such a huge emphasis on collaboration and the interchange of ideas, what you get out of it varies greatly with the competence and creativity of your fellow classmates. For some reason, Prof. Ross seems convinced that the course "self-selects" smart people, that those enrolled in it are naturally highly critical/creative thinkers. This may have been true for past offerings of this course, but I did not find it to be the case when I took it. Out of 22 students, maybe 8 regularly produced creative, original ideas and could competently implement them. Most of the others were pretty average, while a few people were just plain dumb, lazy, or both. This may sound harsh, but when you find yourself teamed up with one or (gasp) two of these people and have to think through an inventive problem solution, code it, and write the final report all by yourself, you *will* feel your urge to kill rising. Also bear in mind that all members of a group receive the same grade, and there is no formal peer review process. I still recommend this course; it has several important merits that others have mentioned, and what you learn in it will stay relevant long after you forget the intricate detail…
Professor Ross has a cool Australian accent. That's pretty much what kept me going to the classes, though he does teach mostly out of the book. Either you go to the lectures and understand the material, or you read the book. You can take your pick. Also, the first half of the semester covers the more interesting stuff, while the second half can get way over your head. Make sure not to slack off mid-semester. You're probably better slacking off for the first month or so.
If you have a hard time to follow in his class don't waste you time going to Ross' office hour. He is going to tell you to do the odd exercises in the book. After he will wait for you to leave. He is not very helpful and he does not make the class interesting. Too bad that some of us have to take his class.
There were 5 problem sets. Each one took many hours. I suspect lots of people cheated, because the textbook answers were sometimes online. Exams were 'fair' in that they closely resembled the material covered in class and found on problem sets. There are 2 projects: a 50 page databases paper on 3 topics of his choosing and a C programming project. The former took much longer than the latter, but both were very useful exercises.
This is a spectacular class! It's officially limited to 30, and there's a chance you'll have to compete somewhat for a spot in the class, but that's rare - my class had 23 or so people at the beginning, and ended up at 21 for the bulk of the term. Unlike most CS classes, Programming & Problem Solving is a discussion-based class. There are four projects across the term (each covering about 3 weeks). There are 5 discussion classes per problem (in which the class demos their latest solutions and discusses their approaches), and one class where each group presents their report. Groups are randomly determined, but you can request to work with particular students (but you can only work with each person on ONE project). The groundwork for the problem-solving has been done for you - the TA provides the class with a simulator program and the interface for your code to use, so you can dive in and typically write a simple/naive solution to the problem in twenty minutes or so, leaving you most of the project time to create and implement more complex solutions - there is almost no setup work. The class works on full disclosure and full sharing - you can take any code you find online and use it, as long as you say you did, and you can rip off your classmates as much as you want, as long as you credit them for what you ripped off. One of the great things about this class is that it brings yo…
The information is useful, but the class is boring. Professor Ross tends to give way too much homework much of which isn't necessary for understanding the material.
Up to you. You are, of course, encouraged to put in an equitable amount of work, but there do not seem to be any serious repercussions for those who do not.
It really varies by both your group and how much work you want to put into the class. However, the more you put in, the more you get out. And you'll probably find you want to work more for this class than your other classes.