Weaknesses of a CS degree:
1) At the point of graduating college, it is likely that your experience working with teams in a production-like environment will be minimal. I think I did, hmm, three labs like this? None of them produced anything close to a real software product.
2) Academics don't work like industry. I worked at the university for a bit after graduation and we still didn't use, e.g., source control, testing, etc etc. Pick your favorite best practices test, we would have scored negative. It took me a few years to learn better habits.
3) You tend to do a lot of stuff which has little relationship to what you'll be doing for the rest of your life. If I were dictator for life of the CS department, I'd have kids exposed to web programming very freaking early, because it is much more likely they'll end up doing that than fat Java client apps (what we actually did in school).
4) There are a lot of soft skills that go into engineering that some schools give short shrift to. I will defend this one to the death: the most important skill for an engineer is oral/written communication, and their ability to actually produce stuff is a distant second. We had one class on technical writing.