Take statistics for example - most people that know something about statistics don't exactly know what a statistical space is (and it is a very precisely defined concept, embedded in the set theory). And that's fine, that's for the "pure" nerds. How to use it can be taught without defining the roots and proving theorems from the ground up. It is also how most of software development is done, few people out there that write code understand how CPUs fetch and execute instructions, talk to other perhipherials, how does malloc()_or sin() work, what is a page fault, or how to balance a red-black tree. Just use std::map or dict() or something, it just works :)