In Australia we have a clear distinction between Universities, which typically teach the underlying theories and ideas of things like engineering, biochem, etc (the why) and TAFE (Technical and Further Education), which typically teach how to do stuff like welding and being a lab technician (the doing).
It's vary rare that a graduating mechanical engineer can weld, for example, because the University doesn't teach them that.
I personally think programming falls into the category of doing (like welding), but in this case it's difficult to teach the why of computer theory without having done some programming, but it's perfectly easy to teach the physics and math of building a bridge without ever having used a welder.