embedded software boot camp

EE vs. CS: The Digital Divide

September 11th, 2001 by Michael Barr

This fall, I’ve had the pleasure and privilege 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 educates future programmers. There is rarely any cooperation between the two departments, nor are students in one program encouraged or required to take courses in the other. A few crossover courses, like the operating system 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. (Even the boundary itself has begun to disappear.) This is true nowhere more so 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. Even if an individual engineer won’t need to both write software and design hardware, he or she will probably be part of an engineering team that does both. And teams need to be able to think collectively and communicate easily about issues that affect both sides of a system’s design and implementation.

It is clear that what is needed at our colleges and universities as we go forward is a proper system for training embedded software professionals. To fulfill the needs of industry, universities need to graduate a large number of software engineers who are capable of understanding hardware and interfacing directly to it, and hardware engineers who can apply valuable software engineering techniques to their digital designs.

Many 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. Just imagine the Democratic and Republican parties coming together to agree that a more centrist third party is essential for the future of democracy in this country. Then imagine them trying to somehow jointly fashion that new political party from amongst their own members. That’s not unlike the challenge now facing the administrators of Electrical Engineering and Computer Science departments at colleges and universities everywhere. But it’s about time that challenge is taken up.

NOTE: this article was originally published on 11/01/00.

Embedded Ubiquity

September 10th, 2001 by Michael Barr

By virtually all accounts, the future of computing lies in the overlapping space between the Internet and embedded computing. As embedded system developers, we find ourselves right in the middle of this crowded intersection. Without us, there could be neither people trading stocks from their cellphones today nor speculation about a tomorrow-world with hundreds or thousands of smart devices per human inhabitant. Yet somehow, embedded systems have never caught the full attention and imagination of those outside our community.

Some long-overdue attention is finally coming our way. A recent issue of Communications of the ACM focused specifically on the topic of networked embedded systems (“Embedding the Internet”, May 2000). One author, David Tennenhouse, stated that

“the computer science research community now enjoys a rare and exciting opportunity to redefine its [40 year old] agenda and establish new goals that will propel society beyond interactive computing…to increased human productivity and quality of life.”

It seems computer science researchers are beginning to realize that further research into one-on-one human-computer interaction will produce diminishing returns. The most complicated problems we’ll face tomorrow are related to the management of arrays of networked embedded devices. To be useful to human communities, such systems must eventually manage their own networks and data and make a variety of decisions automatically.

Consumers and Wall Street are also beginning to notice embedded systems a bit more these days. Here again, the attention is focused most heavily on networked devices. Within the past year, several mainstream publications have run cover stories showcasing future uses of embedded technology in the home. However, the excitement in the consumer space centers primarily on new capabilities for home appliances we already know and love—microwaves that read UPC codes from packaging and use that information to download cooking instructions, for example.

Wall Street’s limited attention to our space has been largely misguided. So far, the largest “pure-embedded plays” have been the Linux-related IPOs. But those aren’t the folks who really stand to gain from the current explosion of uses for embedded CPUs. No organization would build any commercial product if they thought the cost of developing it would rival or exceed the profits on the sales of the thing. So it remains the case that the folks who will really profit long term will be the ones making the proverbial “nickel for every unit sold.” The biggest money is still very much in the processors and peripherals (whether silicon or IP) and in those software components that produce royalties. Services will always play second fiddle to products.

Myself, I’m looking forward to this month’s Embedded Systems Conference, in San Jose. There may not be as much glitz there as on Wall Street nor as much gadgetry as at the Consumer Electronics Show, but there will certainly be a lot more substance. I’m glad to see our industry is finally getting some of the public attention it deserves. But it is only from substance and hard work that ubiquitous computing might eventually be born.

NOTE: this article was original published on 9/14/00.