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.”
“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.