Computer Science doesn't teach software engineering, and nor should it, but then neither does a bio-medical degree teach how to treat patients. Other fields have law school, medical school, etc so why do we as a tech industry expect graduates to know how to program?