There is something rotten in the state of Computer Science education
When I went to university, most of our programming tests and projects where evaluated based on our grasp of various algorithms for sorting, tree traversal, hashing functions and numerous other things, you know, the sort of thing that most high level languages will actually give you for free in their standard API’s.
What we didn’t get to learn, or what our teachers just glossed over, and glossed over in ways that where harmful where basic object oriented concepts like polymorphism and encapsulation. In fact, one particular programming teacher told us to do outright bad things, bad habits that took me years to scrub off as I trusted the teachers advise.
I have a sneaking suspicion I’m not the only one with a similar experience: looking at the amount of bad code in production systems today, and the sheer amount of people who write software in object oriented languages, yet do not grasp even the basics of object orientation becomes mind numbing when you consider it. More people in our industry fail to grasp simple things like polymorphism and encapsulation than those who actually understand it, to use two prime examples. They are happy to use endless if-statements, switches and enumerations rather than polymorphism, and to have systems and sub-systems where each component and class must know about all the internals of all the other parts of the system.
To me, this all exposes a fatal flaw in the current Computer Science education system at all levels (university in particular): the education prepares people well to memorize various algorithms they don’t actually need to memorize, but it leaves people ill prepared to know the basic fundamentals of software design. The flaw is so fatal that it is actually an active liability to the whole industry and a big driver of the pervasive and excessive costs and schedule overruns, as complexity grows exponentially instead of being hidden and limited.
There is something rotten in the state of Computer Science education: it puts emphasis on the wrong things, doesn’t teach at all, or teaches the wrong principles in the areas that matter and fails horribly in preparing future software professionals for the demands of software development.
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)






Comments
Aries McRae replied on Mon, 2010/07/26 - 7:50am
Computer Science leans more towards algorithms and theories.
Software Engineering emphasizes more on the practical aspects of software development.
Whether software eng conforms to the classical definition of engineering is another topic altogether.
Jonathan Fisher replied on Mon, 2010/07/26 - 9:37am
in response to:
Aries McRae
Alexandru Repede replied on Mon, 2010/07/26 - 10:17am
Chad Hahn replied on Mon, 2010/07/26 - 2:04pm
Giorgio Sironi replied on Mon, 2010/07/26 - 12:58pm
Matt Seil replied on Mon, 2010/07/26 - 2:57pm
David Lim replied on Mon, 2010/07/26 - 5:57pm
Well personally, putting the entire blame on the education system is not entirely correct. My lecturers never told us to memorise algorithms, but to understand them. Yet some of my fellow students memorise them anyway, to the point where they even memorise the variable names. Usually, the curriculum itself is fine... but some lecturers fail to help students realise that they need to understand the concepts behind certain things, rather than what their definitions are.
But then, I suspect the same argument can be made for many other disciplines. It's really not just what and where you learn or who teaches you what. It's how you learn.
FY, your "where" should be "were" ;)
Kode Ninja replied on Tue, 2010/07/27 - 4:29am
The problems you list with CS are also present with other branches of engineering. Students in most branches of engineering are so far removed from what's going on in their respective industries that a lot of them have to undergo another round of extensive training with their respective employers, when they get on the job. No wonder so many companies have an extensive induction-cum-training process for freshers... especially in IT!
-kodeninja
Arturo Belano replied on Wed, 2010/07/28 - 11:37am
in response to:
Giorgio Sironi
Corneliuswheldo... replied on Thu, 2011/03/10 - 3:35am
Rehman Khan replied on Sat, 2012/02/25 - 3:58am