This fall, I've had the pleasure of teaching a course on operating-system internals at my alma mater, the University of Maryland. In so doing, I've come to see that the current university-based system of training engineers to do embedded-systems work is severely flawed.
At most colleges and universities, the job of educating engineers is split along hardware-software lines. This educational system has its basis in the separate history and evolution of the two fields. The faculty of an electrical engineering department generally educates future hardware designers, while an unrelated group of faculty in a separate computer science department teaches future programmers. Cooperation between the two is rare. Nor are students in one program encouraged or required to take courses in the other. A few crossover courses, like the OS class I'm teaching to EE majors and the computer architecture class most CS majors are required to take, are insufficient preparation for the world of work.
The fact is that the largest demand for engineers these days is for those who can think and work on both sides of the hardware-software boundary. (Indeed, even the boundary itself has begun to disappear.) This is true nowhere more than in the embedded-systems industry. Companies designing embedded systems need programmers who can port operating systems, write device drivers and board-support packages, and help debug prototype hardware. They also need hardware designers who can write software for the systems they create and increasingly, the job of developing digital hardware looks like programming.
To fulfill the needs of industry, universities must graduate a large number of software engineers who are capable of understanding hardware and interfacing directly to it, and hardware engineers who are capable of applying valuable software-engineering techniques to their digital designs.
Some schools have already merged the two departments into a single EE-CS department, or borrowed faculty and courses from each curriculum to create a hybrid computer-engineering degree program. But is either approach really working? Without a focus on the actual skill sets and integrated knowledge required by industry, these new degree programs are too often simply “six-from-column-A and six-from-column-B” quick fixes.
Bringing together two departments full of people who have long segregated themselves is easier said than done-akin, perhaps, to getting Democrats and Republicans to refashion themselves into one Centrist Party. But for EE and CS departments at colleges and universities everywhere, it's time that challenge is taken up.
Michael Barr () is the Editor in Chief of Embedded Systems Programming, a CMP Media Publication, and a lecturer at the University of Maryland.