In an ideal world you'd learn both the theoretical pinnings of CS, and the discipline of writing clear, maintainable code, which comes from engineering.

I have to take issue with the comment that...