All attempts to establish best "engineering practices" in programming have so far been resulting in incredibly messy and inefficient technologies. UML, Corba, Object Oriented programming -- just to mention a few.
Also, whatever comes from an academic institution, as a rule, doesn't pass the reality check until it get stress-tested by the industry. Professors who don't build real-life software systems, can't tech engineering by definition -- they should stick mainly to theory.
Until programming matures, CS algorithms and data structures should remain our nails and wood.