Computer Science is a weird academic department.  There is very much such a thing as the pure, non-engineering <i>formal science</i> of computing.  However, most Comp Sci departments justify their budgets and existence by recourse to teaching undergraduates a minimal foundation in actual computer-science, and a substantial amount of <i>software engineering</i>, which is actually a separate field.<p>Personally, I <i>like</i> pure computer science and CS academia, but most of the undergrads taking CS degrees are trying to learn software engineering, and will object <i>loudly</i> if asked to take, for instance, type theory, topology, computability and automata theory, statistical learning theory (ML courses have <i>massive</i> drop rates), computational complexity, Kolmogorov complexity theory, how to build an operating system, compilers and optimization, abstract interpretation for static analysis, mathematical logic, etc.