coding gems and personal insights in the electronic age, by nic werneck

OO programming loses its crown at CMU CS course

I loved to hear the news about OOP being pushed ahead and turned non-essential in the CS course at CMU. I applaud the decision!

Much of the arguments against the move are sounding to me like any other discussion that involves OO in general… First of all, it always falls back at OO’s _definition_.

I believe in integers, vectors, data structures, algorithms, procedures. I understand what are “objects”, but the truth is “methods” are not much more than syntactic sugar, and most of the high-level OO theory only serves to please those paranoid library programmers to forbid their users to do this or that… It’s all about scope, permissions… Why is this taken as so much essential to programming?

“Paranoid Object-Oriented Programming” (POOP) may have its place in the industry, when you have to make libraries that will be used by hundreds of thousands of tired/lazy/bad programmers to make critical and very large applications. But the university must not make this paramount. Students must focus back on more essential aspects of programming.

This obsession with OO also grew along with Java. Universities kind of picked it up from the industry and started to turn CS courses into “Java programming” courses. Could it be that this weakening of the OOP fever is related to the dusk of Sun?

This semester Dan Licata and I are co-teaching a new course on functional programming for first-year prospective CS majors. This course is part of the new introductory CS curriculum at CMU, which includes a new course on imperative programming created by Frank Pfenning, and a planned new course on data structures and algorithms, which will be introduced by Guy Blelloch this fall. The functional and imperative programming classes are independent … Read More