Philip Greenspun is an MIT professor of software engineering / computer science and electrical engineering. He has many good ideas about what an excellent engineering and computer science program should contain. I really wish I knew about his advice before I entered college. While I did receive a good education, I really thought it could have been better.
Here is a link to his software engineering teaching page: http://philip.greenspun.com/teaching/ Check the links under the 'Background' section.
It's pretty good advice for when/if you look for a college/university program. One thing that really struck me with his approach is that theory is something really left to the student (not to say that it won't be covered). It's more or less something you'll pick up in the course of doing project after project. And that's really the basis for his argument: the workforce expects you to complete, from beginning to end, projects. Getting requirements, continuous and clear communication with all parties involved, knowledge of tools and usage, et. al. He feels a good education will have you completing your >20 or 30 projects, so that by the time you enter the workforce, instead of having only a few, if any, under your belt this very next project is number 21 or 31.
He also has a biting commentary about his attendance at a "typical" non-project, theory only course. That's worth a read. I also really like his ideas about having no summer breaks. You aim to complete your degree in 3 years or less. Think about it. College is pretty expensive! You want to be able to start paying off loans ASAP. Why wait 4 years?
Anyways, I could go on!
My junior and senior years at college did have a decent mix of hands on projects under a non-Philip Greenspun curriculum. I had to make an OS, an Ada compiler, a motherboard computer system with small OS using a Motorola 68000 (yes, showing my age) -- that was with wire-wrapping no less, yeesh!