Perhaps people are overestimating the application of mathematics to rocket science and engineering...
Gathering a set of courses that will reach the destination is all well and good, but imagining a trip there isn't the point.
You still have an army of engineers designing the rocket, its parts and sub-parts. Testing each part, and thoroughly testing the assemblies before sending the resulting design out into the field.
- On the tiny scale:
- physics will say; resistors do this, capacitors do that, inductors do this. Combine a resistor and a capacitor in this way to get a low-pass filter.
- Computer science will say; if statements do this, jumps do that, and assignments do this. Combine a jump with an if statement in this way to get a while loop.
- On the small scale:
- physics will say; this AC/DC circuit should handle X amount of volts, and convert the electricity with N% efficiency.
- Computer science will say; this function should convert inputs of type/range A to type/range B, in order O(N^M) time and memory use.
- On the large scale:
- the engineer can handwave; yes we can make a rocket that will reach the moon.
- The programmer can handwave; yes we can provide remote access using a web client.
To get back around to the parent post; I believe the average programmers DO know at least the core theorems. Advanced programmers know more high level constructs as well as low level details and implementations. We can all analyse and derive problems with handwaving, to various degrees of detail depending on experience.
If you try to program without knowing the core theories, you won't get very far and will be limited to not only plugging prefab modules together, but also limited to a subset of their features and capabilities. In terms of engineering; anybody can wire together a battery and a motor to make their own fan, reasonably easily. But that same random person trying to create their own an air conditioner, battery or motor could be quite a disastrous project.