WASHINGTON – Growing concerns about the quality of U.S. engineering education are increasingly focusing on specific areas like the shortfall in university computer science courses related to embedded systems programming.
The problem is particularly acute since embedded programming skills are the foundation for developing safe, reliable, mission-critical systems used in everything from medical devices to commercial aircraft.
Critics lay much of the blame for the embedded programming gap at the doorstep of university computer science departments that have tended to migrate curricula toward trendy programming languages like Java at the expense of unglamorous tasks such as how to design and analyze algorithms and data structures. In a recent article examining the embedded gap, Robert Dewar, an emeritus professor at New York University and CEO of software tool vendor Adacore, argued that universities need to rethink the programming languages taught in their introductory computer science courses.
“To be blunt,” Dewar wrote, “adopting Java to replace previous languages used in introductory programming courses – such as Pascal, Ada, C or C++ — was a step backward pedagogically. Many universities went to Java because ‘that’s where the jobs are,’ but ironically may have produced a generation of programmers with over-specific but superficial skills who are now losing jobs to overseas competition with broader and deeper talents.”
Some embedded programming experts think Dewar understates the severity of the programming gap. Evangelists such as Michael Barr have moved beyond merely highlighting the problem and have sought to fill the widening programming gap with initiative like Barr’s week-long, hands-on Embedded Software Boot Camp. The primary impetus for the boot camp, which focuses on skills like controlling hardware in C or C++ languages and writing more formal device drivers, was Barr’s conclusion that “there’s no good firmware training in [U.S.] universities.”

Michael Barr
“The one common denominator that I’ve found [is] that people cannot do well in class unless they know C” programming language, Barr said in an interview. “I’m not saying they have to know obscure parts of C [but] they have to know the basic syntax of C.”
Those with computer science or engineering degrees who started with Java are “fundamentally unable to approach the material,” he added. “That’s where I think things are falling down.”
While the shift to Java programming and away from C among university computer science programs benefits some code jockeys, Barr asserted that it has done relatively little to improve the hiring prospects for software engineers working at critical hardware interfaces.
Barr, who specializes in software design for medical devices and other embedded systems, said he sees little progress toward addressing the embedded programming shortfall aside from his boot camp and a separate effort to get engineering groups like the IEEE to address the issue. The fact that the next embedded boot camp to be held in Maryland in early May has attracted programmers from Belgium, Canada, Mexico and Turkey as well from around the U.S. illustrates the lack of emphasis on embedded programming. “The reason for that is simple: There’s nothing like it in the world,” Barr claimed. He added that his hands-on approach to teaching embedded programming is precisely what is currently lacking in university computer science courses.
Barr said reactions to the boot camp range from, “You helped me integrate knowledge that I had but didn’t know how to use“ to, “Why didn’t someone teach me this 20 years ago?”

Embedded evangelist Michael Barr uses this Venn diagram to illustrate the current status of embedded software programming in the computer engineering ecosystem and why there is a lack of good firmware training.
Explanations vary as to why university computer science departments have deemphasized teaching embedded programming skills based on the C language. Along with trendiness of Java programming, observers also point to the chase for research grants that effectively removes experienced engineering and computer science professors from the classroom. Another reality is that embedded programming teams tend to be smaller (a single hardware designer and a few software engineers, for example), hence the discipline doesn’t generate a lot of job opportunities for computer science graduates.
On the other hand, the relatively few larger embedded programming projects in industries like aerospace usually focus on older technologies. “It’s such a conservative, process-oriented work environment that it turns off” most software engineers, said Barr.
Observers differ on whether a crisis looms if instruction in embedded programming languages like C continues to lag. Responding to the article by embedded systems software specialist Dewar, one engineer noted: “Problem solving is the [No. 1] skill. Specific knowledge of a language is not important. That can be learned. Specific knowledge has a short shelf life in this industry.”
But Barr worries that the lack of C programming courses and the fact that most software engineers fluent in the language are older means that “at some point it becomes a bit of a crisis.” The reason, he added, is that “this touches everything from refrigerators to automotive [to] smartphones [and] better medical devices.”
hey,I am a CS major from india...and i am planning to do my post graduation in embedded system software engineering..i found in my cs curriculum that they focuses on low level concepts like digital design,processors,ALP in just earlier semesters..and
switch the focuses on higher level programming like java,vb,c# and php in higher semesters..so most of the students make major projects like websites,web application or mobile applications as their major projects due to current trends in market..and obsolete all the basic studies of earlier semesters..And they cannot perform upto the mark in embedded industries..