Principles of curriculum design and revision: a case study in implementing computing curricula CC2001