Biggest thing that needs to be taught as one of the fundamentals for software engineering is approaching problems with scientific method.
Design, testing, and debugging (which takes up more resources than writing code) require skill in forming good hypothesis and methodical way to test that hypothesis.
These type of courses should be designed more towards those skill sets than just learning to write code.