Someone straight out of college with a "real" CS degree will likely know about about algorithms, data structures, compiler theory and so on. Some of those skills are not terribly useful for many entry level programming jobs but some are critical. I'm unlikely to hire an entry-level programmer who doesn't know basic data structures, for example.
For those whose experience is "real world", they might be able to tell you a lot about unit testing or source control but stare at you blankly if you ask them about red-black trees. That might be OK depending upon what their work requires them to do.
If you're prone to categorize, most CS/programming skills could be loosely grouped into three areas.
- CS knowledge (e.g., compiler theory)
- Real world knowledge (source control)
- Overlap knowledge (basic data structures)
What would you put in each group and why?