If you only want to program something that works, a small program that doesn't need to scale and doesn't have maths, come into play. Not all optimisations are code level optimisations. Some require the clever use of maths to reduce the number of computations for example. Also when you are dealing with Databases or other applications, considerations on where processing should take place. At the macro level, the architecture and technologies to use; at a more micro level, you have to consider I/O operations, networking, redundancy, concurrency, etc.
But then, if your world of CS is just programming, then the education offered is just a waste of time and money.