Agreed UML is something I have never used or wanted to use. Z and all that stuff as well. DRY and clean code is clearly in the box of theory of practice to me and that stuff is not computer science but is the practical advice, rules of thumbs and heuristics that get developed. What is problematic is the worship of these theories of practice and their is many points where they break down and knowing when they don't apply or why their not entirely correct here is golden and fuzzy and ineffable or at least unteachable.
But the things that are in a computer science course. Type theory, compatibility, time/space complexities, more general algorithmic analysis, Logical programming, logical inference algorithms, Low level fundamentals, Mathematical concepts and proofs, machine learning, different models of programming, combinatorics algorithms. These are very useful many unchanging.
I must concede that I do hold in low esteem theories of practice that are taught as a panacea but this is a tiny fraction of what a student will learn and likely any one learning the craft will simply pick this up from tutorials or youtube.
It's not as if they are always bad rules of thumb either but that they can be done away with or violated once one knows what they are doing and has understood a bit more and got a feel for things.