Because most colleges teach "computer science" not "software engineering". Computer science is primarily about abstract concepts, and not so much about necessarily doing anything worthwhile with them
A computer science curriculum (even a theoretical one) need not consist only of abstract concepts. And it need not include software if the purpose is to have a theoretical curriculum. I've always been a fan projects whose primary purpose is to help you learn the concepts. My favorite courses have been of the type where the problem sets are: "read this paper; understand it; implement the algorithms; write a report with results and discussion."
A computer science curriculum (even a theoretical one) need not consist only of abstract concepts. And it need not include software if the purpose is to have a theoretical curriculum. I've always been a fan projects whose primary purpose is to help you learn the concepts. My favorite courses have been of the type where the problem sets are: "read this paper; understand it; implement the algorithms; write a report with results and discussion."