Review of the Evolution of the Computer Engineering Field and Proposal of a Framework of Recommendations and Guidelines for Designing Computer Engineering Curricula