I did undergrad CS @ Columbia as well. Of course you're not going to skate by as you would in insert-non-offensive-easy-major-name-here, but you learn a hell of a lot more. It's my personal belief that (especially in technical fields) you can't learn without putting a lot of hard work into something. But in doing so, you'll also keep yourself a step ahead of the curve in the job market. As per the article, plenty of people know how to code, not quite as many know CS.
Also personally I felt like this is an exceptionally competitive major (as are sciences in general) but I'm sure that's true for other schools as well. It's okay to get a B -- you're being compared against other brilliant people and plenty of people would be lucky to hire you. This is probably the one piece of knowledge I would have told myself 3 years ago when I started it.
I completely agree. It was more that I ended up going into finance, so GPA became a sticking point. It all turned out okay - I just wonder whether Columbia could make CS less brutal.
I'm sure this depends a lot on what your preferences are. I just finished my undergrad in computer engineering at Columbia. I thought the project-based classes (and the vast amounts of work they entailed) were the most valuable parts of the program. Sure, you'd probably get higher grades if you just minored, but when it comes to hiring for software engineering jobs, companies tend to care more about what you know and what you've done than what your grades are. And you're more likely to know more about CS and have done more interesting projects if you have taken difficult project-based classes like operating systems, embedded systems, and programming languages and translators.
I'm not sure it's worth the workload!
You will have _no_ free time and get reamed in GPA
Very math-heavy and the project based classes were brutal.