Basic Computer Engineering Curriculum Components

6.3 Basic Computer Engineering Curriculum Components

In assembling the curriculum, institutions must package material into modules, typically into classes or courses. Even though there are many different ways for arranging these courses into a complete curriculum, there are some commonalities that can be discussed here as general guidelines.

6.3.1 Coverage of the BOK Core

It is tempting (and easy) to view the BOK itself as a list of courses, and check off coverage of a BOK area by assigning a course or a course sequence to it. In fact, most curriculums will have courses and course sequences that map well to BOK knowledge areas. However, coverage of a BOK knowledge area can also be done by spreading the knowledge units among several courses. The Computer Science Curricula 2013 in fact recommends that information security topic coverage be integrated through the curriculum. Knowledge units from the Professional Practice and Strategies for Emerging Technologies knowledge areas could similarly be integrated into several courses across a curriculum. It is recognized that spreading knowledge unit coverage among several courses does takes more coordination and planning among the faculty members responsible for those courses.

6.3.2 Course Arrangement

Course sequences are typically used for topic coverage, with the sequence following introductory, intermediate, and advanced topics as the student progresses along the curriculum. Examples of introductory computer engineering courses are basic programming courses, digital logic, basic computer organization, and electrical circuits that provide the foundation required for further study. Intermediate courses generally add depth to these topics and expose students to state of the art techniques in these areas. Intermediate courses also reinforce topics from introductory courses, such as by requiring a programming language taught in an introductory course to be used to complete work in the intermediate course. Advanced courses are those that require a broad range of knowledge from several courses, such as a computer networks course or operating systems course. Computer engineering curriculums should also have a least one or two technical elective courses that allow students some choice in shaping their educational experience. To emphasize individual choice, choices for technical elective courses should not be overly restrictive, such as allowing any upper level course from computer science or electrical and computer engineering to serve as a technical elective.

6.3.3 Lab Experiences

Lab experiences are crucial to developing skills required to practice the art of computer engineering. Good lab experiences force a student to demonstrate they understand lecture topics by successfully creating a program or hardware system to meet a set of criteria. Good lab experiences also expose the student to state-of-the-art tools and methodologies that will prepare them for real engineering work after graduation. The CE2016 steering committee recognizes that lab experience development requires a significant faculty time and departmental financial support, but emphasizes that these investments are needed in order to produce quality computer engineering graduates. Sometimes innovative approaches are needed for adding lab experiences, perhaps by taking a traditional 3 hour semester lecture course and transforming it into a 2 lecture + 1 hour lab experience.

6.3.4 Culminating Project

The culmination of the study of computer engineering should include a final year project that requires students to demonstrate the use of a range of knowledge, practices and techniques in solving a substantial problem. This culminating experience can synthesize a broad range of undergraduate learning and can foster teamwork and professional practice among peers. The culminating project is essential to every computer engineering program.

6.3.5 Engineering Professional Practice

Chapter 5 has already described several methods for incorporating elements of professional practice into a computer engineering curriculum. Professional practice topic coverage is important to developing well-rounded computer engineering graduates.

6.3.6 Communication Skills

Students in computer engineering must be able to communicate ideas effectively in writing and in both formal and informal oral presentations, as described in Chapter 5. Therefore, computer engineering programs must develop in their students the ability to present both technical and non-technical material to a range of audiences using rational and reasoned arguments. The manner of presentation includes oral, electronic, and written methods that are necessary for all engineering programs. While courses taught outside of computer engineering may contribute to achieving these skills, it is essential that appropriate communication requirements be included within computer engineering courses. This is necessary to ensure that students have the ability to communicate discipline-specific content; further, such activities contribute to the students’ learning of technical material.