AymanFarhat wroteAgree. They end up teaching you stuff you don't need, that's what many people told me and that's why i chose to keep it for a later time after I graduate with a degree in M.I.S., by the time I am studying for my first degree I would be learning advanced stuff in programming on my own where I learn whatever I like and hopefully in the next 3 coming years the CS program becomes better in Lebanon or maybe we would have by then Software Engineering majors at universities...hopefully... :P
The problem is not "what" they teach, its "how" they teach it. As soon as you step in to a CS major you'll be exposed to the first programming course based on a certain language and they feed your brain as to how things are done "using" this language, where in fact the emphasis should be more on logical and functional computation whether pseudo or using a functional language.
Jumping directly to imperative and object oriented programming is terrible especially in this technological age. OO was fine 9 years ago and its still fine now with certain design patterns applied to the graphical world of programming yet its overly abused and the corporate giants and open source communities are starting to realize that. over the last three years the corporate giants have all been researching the functional way of dealing with computation. Its very noticeable especially when you see people busting their a$$ trying to apply functional approaches through imperative programming using Nemerle and Scala.
This is a huge topic i honestly can't tackle it here sorry. I do have a link in the Coffee Break post i believe which should give you an idea of what i'm talking about.