I often hear complaints at U of T for the lack of “real world” skills learned, and the dreadful lack of coding courses in their computer science programs. This is exactly why I loved getting this degree. When I took intro to databases we didn’t learn SQL syntax and implement MySQL on a crappy PHP web application. We learned from the ground up, using relational algebra, why the database works this way and how it came to be. We learned how networking works from the most fundamental principles, so that when a new protocol or technology comes about, we already saw it coming and understand the progression.
It is easy to learn how to implement technology and apply it over and over. Yes, that part does not require any math, and can be taught to a monkey. Where the science of computers differs, is when you can fundamentally understand and visualize the entire progression and meaning behind everything from the hardware to the abstract software concepts.
We are only getting started with big data and we will look back on the computational power of today as a cute hobby compared to the computers of tomorrow. Computer Scientists will make this happen, not programmers.