Mike Anderson, a frequent speaker at the Embedded Systems Conferencewrote recently on Today'sEngineer about why embedded engineers in the US are losingtheir edge. He feels CS departments are doing a poor job turning outgraduates trained in the skills needed in firmware design. That's acomplaint I've heard from many other sources, particularly fromcompanies trying to hire embedded engineers.
In the olden days embedded folks were mostly EEs who picked upprogramming skills from their education or on the job training. Now myinformal surveys show that, here in the US at least, around half of allfirmware developers have CS degrees.
Considering the time needed to obtain a EE degree (5 years istypical) and the expense (an additional year of school plus someuniversities now have a surcharge for engineering and science) it'sreasonable to expect fewer EEs and more CS folks will be entering thisfield.
So I looked at course requirements mandated by the CS department atone large university. The results backed up Mike's assertions. Requiredclasses in the major program are:
– Object-Oriented Programming I and II (in Java )
– Discrete Structures (in Java )
– Introduction to Low-Level Programming Concepts (no programming requirement I could discern )
– Computer Organization (a bareintroduction to assembly but that appears superficial )
– Organization of Programming Languages (C, Pascal, ML, LISP, Prolog, C++, andSmalltalk ” so many, it's hard to imagine a harried student wouldmaster any of them. )
– Algorithms (no apparent programming )
Numerous electives are required as well. As far as I can tell onlyone has a programming requirement. Classes offered include networking,security, databases, usability, formal grammars, numerical analysis,crypto and the like. There's a single class ” which is not required -on software engineering with dated material (like chief programmerteams) that requires a significant amount of programming.
So a CS major graduates with a minimal exposure to assemblylanguage, and no real C or C++ experience. She's basically a Java whizwho would be baffled by pointers, dynamic memory allocation, resourceconstraints, or many of the other critical issues faced by firmwarefolks.
In a recentpoll on Embedded.com only 7% of respondents said they have used noassembly at all. 79% have used at least a couple of differentassemblies. Though assembly is a diminishing part of our work, it's asessential as word processing.
The same school's EE department requires a C programming class,courses on signal theory, assembly language, and computer organization” even for students pursuing a specialization in power engineering orother non-computer aspect of electronics. Many electives target ourwork: DSPs, control theory, programming microprocessors, OS design,filters, and the like.
What do you think? Are CS departments missing the mark when it comesto preparing firmware developers for the real world?
Jack G. Ganssle is a lecturer and consultant on embeddeddevelopment issues. He conducts seminars on embedded systems and helpscompanies with their embedded challenges. Contact him at . His website is .