Paul writes:
These aspects of programming [invariants, coupling, cohesion, etc. -- rudiments of software quality] are clearly part of 15-212 in the attached CMU revised core that Rany Bryant spoke about at the review:
I copied the new CMU program (which has specific courses as well as distribution requirements at the higher levels) and did their version of the "core" diagram, where I have shown 200-level courses as serving the same role as our 300-level core.
For comparison I include a document where I copied CMU's old core. The courses in the new core all meet for 3 lecture hours per week plus a 1 hour section for a semester. The old core had a very uneven distribution of credit hours per course.
One aspect which I like is that the 15-212 course is not just a follow-on to the intro programming courses so that one can deal with higher level concepts