Computer Science education at the undergraduate level is all over the place even in most renowned universities. The faculty direct a firehose of knowledge at the students, without considering how much then intake and create a sink or swim culture to weed out students, instead of actually trying to teach and make them learn. Even the programming and data structure courses are either instructor's favorite language focused instead of teaching principles of both the science and the engineering.
There are guides like https://teachyourselfcs.com/ but they are aimed at experienced developers.
Almost all guides assume that either you know programming or you will pick it up by looking at the syntax of a popular language and solving a few problems using it.
Mathematics is taught systematically at universities, but, I think CS doesn't get the same treatment. That's why we get so much junk in production systems.
If you were asked to design/teach a curriculum to CS students that teach both the science and the art (engineering) how would you design it?
Ordering of topics, books used, anything that comes to your mind. Shoot!