Sign In

Communications of the ACM


What Should We Teach New Software Developers? Why?

whiteboard eraser

Fundamental changes to computer science education are required to better address the needs of industry.

The full text of this article is premium content



I believe that the answer to bjarne's challenges is Bjarne himself. No one could ever accuse him of not being an academic. nor could we accuse him of being "out of touch" with his specialty. C++ programming and computer science. having cut his academic teeth with some of history's greatest minds, he chose to apply that in many ways. his work at Bell/AT&T labs, It is apparent that that place was both a great place for industry and for academic ideas. Allowing him to do meaningful work and also to work on abstract ideas and turn them into reality. having grown up not 50 miles from murry hill NJ, where he worked I wonder how much of my parents telephone system worked on the software he devised with the other great people that worked there. today he has moved from industry back to academia. I can only believe that the courses that are taught there are relevant to both academic needs and industry. I couldn't see Bjarne working there otherwise.. He is perhaps that best qualified person to teach computer science or more specifically systems programming.. A lifetime of writing software and solving challenges could only be the best crucible to make a good teacher.. So in short to solve the very challenges that Bjarne has so well laid out, we need only figure out how to make more of him..


Maybe what needed is internship or practice credits in a computer science degree. This is what is done in medicine and in education. This would also have the side-effect of creating more communication between industry and academia.

CACM Administrator

The following letter was published in the Letters to the Editor in the May 2010 CACM (
--CACM Administrator

Bjarne Stroustrup's Viewpoint "What Should We Teach New Software Developers? Why?" (Jan. 2010) was excellent in its call for curriculum reform but used the wrong model that a single department is able to fulfill the needs of a mature computing discipline. Other disciplines recognize the need for a multi-departmental model with separate but interrelated departments to support both theory and industrial applications.

Chemistry, physics, and biology departments expand the boundaries of knowledge and create new tools that are then applied by chemical engineering, civil engineering, and clinical medicine departments in industrial settings. Computational (not computer) science departments must be centers of innovation, advancing the general principles of the discipline, while software engineering, IS, and IT departments build on the computational principles from the CS departments to prepare graduates needed by industry.

Undergraduates in chemistry and chemical engineering all take the same general-chemistry courses and labs as freshman, learning general principles with the help of test tubes and Bunsen burners. They then work at the laboratory scale required for research, while chemical-engineering students acquire the skills and knowledge of "bucket" chemistry required for industry.

Professionalism is an important goal, associated, as Stroustrup said, with the application side, not the theoretical side of the discipline. Licensing is for engineers, physicians, and pharmacists in the public domain, not for those working on theory. Coming to a consensus on the appropriate curriculum for different departments makes it easier to develop professional licensure.

A single department is no longer all things to all stakeholders. Needed instead is an ecosystem of interrelated departments supporting the range of theory and applications of the computational discipline.

Mark Segall
Denver, CO

Displaying comments 11 - 13 of 13 in total

Sign In for Full Access
» Forgot Password? » Create an ACM Web Account