Thursday, August 2, 2018

The Role of Design in Engineering and Software Engineering Education.

A continuing issue I have in the teaching of computer science at university is that I believe it is either delusion or fraud. What the computer science program is used for by students is to prepare them for a job in software engineering yet few schools seem inclined to embrace that label and instead cling to the more traditional notion of computer science. I don't see how we can progress as educators if we do not look honestly at what is going on and how that is not serving the needs of the students. 

Computer science, when it was first acknowledged as a separate academic department apart from applied mathematics, was either organized with mathematics, as a branch of applied math, or in the engineering college, to align with the hardware engineering. According to a an ACM article, the first PhD in computer science was awarded to Richard Wexelblat in 1965 and the second was awarded to Andy van Dam both at the University of Pennsylvania in 1965/1966. (https://cacm.acm.org/blogs/blog-cacm/159591-who-earned-first-computer-science-ph-d/fulltext). The general trend has been to organize the department into the college of engineering but I happen to believe that is wrong and implicitly acknowledges that what is really taught as computer science is truly software engineering under the false label of computer science.

This was easily justified in decades past since there was really not sufficient material to make a distinction. But the amount of material that can be taught, and should be taught, to a budding software engineer has grown and university programs find themselves constantly squeezed to satisfy current market needs by teaching many current techniques while also unwilling to stick to the traditional programs that stressed the more abstract computer science in favor of heavy emphasis on programming. 


There is one particular failing that results from this trend to cling to the science as opposed to the engineering and that is the place of design in the curriculum. And this failure is not limited to only the computer science department but can be seen throughout the college of engineering. For engineering differs from science in one crucial respect, it is inherently tied to economy and to the satisfaction of a client. So why do I believe this is so in today's universities? I believe it is a combination of a few aspects of the culture and history of engineering in the US.
Engineers are invariably quantitatively oriented. And for software engineering in particular, the formal mathematical foundation of the discipline does not admit for much qualitative or humanistic ambiguity. The first uses of computers were for intense calculation and that did not require any design, at least as that concept was understood outside of an engineering discipline where design only meant the choices one made between some relatively well known approaches. Design, and humanities in general, were kept external to the discipline and while that works for most engineering disciplines, it is no longer tenable in software engineering. 


All engineering requires a degree of creativity although the practice is more dominated by the reuse of a few well known designs that are scaled or altered by the application. But even the most routine of engineering disciplines allows for novel design and innovation. Software engineering is exceptional in the growth and innovation that it has experienced. And its high-touch applications in human-computer interaction with its use of visual communications, it has benefited from graphic artists and others outside of the engineering college. 


The other way in which humanities was admitted to the study of software engineering was from the liberal admission of metaphors to architecture. Today major software systems are complex and enormous ensembles that dwarf any physical structures we build today. Yet the way we understood the construction of a software system was heavily influenced by the construction of buildings and other large scale physical artifacts like airplanes or rockets. This had enormous impact on both practice and education as I'll explain below. But for now the point i wish to make is that all of engineering wanted to distance themselves from a discipline that was aligned with the art department, art and architecture. 


A lecture that gives voice to many of the beliefs I hold about software engineering can be found on Youtube and was given by Glenn Vanderburg under the title, Software Art Thou. (https://youtu.be/RhdlBHHimeM)  
This was easily justified in decades past since there was really not sufficient material to make a distinction. But the amount of material that can be taught, and should be taught, to a budding software engineer has grown and university programs find themselves constantly squeezed to satisfy current market needs by teaching many current techniques while also unwilling to stick to the traditional programs that stressed the more abstract computer science in favor of heavy emphasis on programming. 


There is one particular failing that results from this trend to cling to the science as opposed to the engineering and that is the place of design in the curriculum. And this failure is not limited to only the computer science department but can be seen throughout the college of engineering. For engineering differs from science in one crucial respect, it is inherently tied to economy and to the satisfaction of a client. So why do I believe this is so in today's universities? I believe it is a combination of a few aspects of the culture and history of engineering in the US.


Engineers are invariably quantitatively oriented. And for software engineering in particular, the formal mathematical foundation of the discipline does not admit for much qualitative or humanistic ambiguity. The first uses of computers were for intense calculation and that did not require any design, at least as that concept was understood outside of an engineering discipline where design only meant the choices one made between some relatively well known approaches. Design, and humanities in general, were kept external to the discipline and while that works for most engineering disciplines, it is no longer tenable in software engineering. 


All engineering requires a degree of creativity although the practice is more dominated by the reuse of a few well known designs that are scaled or altered by the application. But even the most routine of engineering disciplines allows for novel design and innovation. Software engineering is exceptional in the growth and innovation that it has experienced. And its high-touch applications in human-computer interaction with its use of visual communications, it has benefited from graphic artists and others outside of the engineering college. 


The other way in which humanities was admitted to the study of software engineering was from the liberal admission of metaphors to architecture. Today major software systems are complex and enormous ensembles that dwarf any physical structures we build today. Yet the way we understood the construction of a software system was heavily influenced by the construction of buildings and other large scale physical artifacts like airplanes or rockets. This had enormous impact on both practice and education as I'll explain below. But for now the point i wish to make is that all of engineering wanted to distance themselves from a discipline that was aligned with the art department, art and architecture. 


A lecture that gives voice to many of the beliefs I hold about software engineering can be found on Youtube and was given by Glenn Vanderburg under the title, Software Art Thou. (https://youtu.be/RhdlBHHimeM)  A key item he reports is ideas held by the dean of the Harvard engineering school from 1951 to 1957, Doctor Van Vleck. He desired to place engineering on a more scientific basis. It should be noted that Doctor Van Vleck was a Nobel Prize winning physicist. In the talk Brooks is quoted as having said:

The Vanderburg video rails against the embrace of the waterfall model for earlier academics. There was always a belief that this was the dominant process model for all engineering. 



"Van Vleck was very concerned the the practice of engineering be put on a firm scientific basis. He led a vigorous shift of American engineering education away from design toward applied science. The pendulum swung too far; reactions set in; and the teaching of design has been contentious ever since."
I agree with Brook's comment and I see as a consequence that the heightened need to teach design principles now affects all engineering disciplines but is most visible in the failure of computer science professors to teach even rudimentary design concepts. And it has also shaped the expectations of these students to what the academy believes is the correct process that should be followed in industry.
The needs of students, the needs of future employers and even the material itself all argues for a fundamental rethinking of how students who wish to become software engineers are taught at university today. We must look at the distinction between engineering versus science and also redress the avoidance of good design in their education. It is our job to do the best we can and I believe we are failing to do so.

No comments:

Post a Comment