As the 21st century fast approaches, computing professionals still do not have a clear understanding of the nature of their profession. This is unfortunate, especially since the discipline has accumulated enough science over the years to make it stand on its own.
Several computing pioneers and professional organizations attempted to define the discipline of computing [14]. All of these attempts concluded that computer science is neither a science nor is it engineering in a traditional sense. Computer science defined a new relation between theory and experiments. In computing, unlike other disciplines, we cannot separate theory and engineering due to the nature of the discipline; such separation would be disastrous [3]. Recent advances in genetic algorithms and neural networks are but a few examples of what could be produced when we couple theory with practice. The science and engineering aspects in computer science are much closer than in many other disciplines and that is what makes computer science unique. Still computer science cannot be regarded as a classical practice of engineering; it is a new form of engineering. To quote Hartmanis [4]: "I am deeply convinced that we should not try to draw a sharp line between computer science and engineering and that any attempt to separate them is counterproductive."
Today, most of the confusion about computer science stems from the name of the discipline. The word "science" refers to a body of knowledge; we use it collectively to refer to the fields of engineering as "engineering sciences." But the title "computer engineer" should not automatically associate with the construction of hardware. Computer design involves instruction-set architecture, organization, and detailed logic design and packaging [5].
Computing problems demand the invention of new engineering methodologies for the exploration of information and intellectual processes. In some cases, the same methodologies are used to develop both hardware and software (such as object-oriented techniques). Computing professionals are concerned with the design and analysis of hardware and software to perform new functions or to perform old functions in new ways [7]. It’s my view that the restriction of engineering to computer design and the exclusion of all other activities is harmful; I cannot imagine organizations or individuals investing in an operating system or a compiler that is not well engineered.
What the Society Needs
There is a strong need for computing professionals who can engineer systems based on solid, scientifically proven methodologies with deep understanding of computing theory [9]. This need is more evident in the field of software engineering as it is much less mature than hardware engineering, more complex, and deals with a strategic product. Recent calls to separate software engineering from computer science are outrageous [2]; we should have one computing discipline with several subspecialties, especially since software engineering methodologies are utilized in all layers of the virtual computer. We should look at computing programs from a new perspective, one through which we acknowledge the importance of the systems approach to hardware and software systems. That view should be clearly explained and advocated to our students. We should have them appreciate the three processes: theory, abstraction, and design [8]. The move last year by ABET and CSAB to unite was a very important event. Consider the statement by Eleanor Baum, ABET president, following the joint signing of the agreement: "This marks a very important step in unifying the computer science and engineering communities."
Over the years, top educational institutes worldwide have been offering solid computing programs tightly coupled to engineering. This is quite evident in the U.S. as the top computer science departments are hosted in engineering schools (for example, MIT and UC Berkeley). The problem is that these programs do not have the same title. In the U.S., you will find names such as "computer science," "computer engineering," and "computer science and engineering." In Europe, it’s called "informatics." These programs used to seek accreditation by ABET and CSAB separately. It used to be that programs with the title "computer science" would seek CSAB accreditation, and those with the title "computer engineering" would seek ABET accreditation (even though ABET does recognize computer science as a legitimate engineering field).
Establishment of the Computing Profession
The proper establishment of the computing profession requires the coordination of our efforts to tackle the following issues appropriately:
- Redefinition. Computing is a new engineering discipline. We should spare wasting any further time trying to understand its nature. We already know what it is and what role computing engineers fulfill in their societies.
- Education. Through the new perspective, IEEE-CS and ACM should design a curriculum that prepares capable computing engineers. Computing Curricula 91 [8] would be an excellent starting point. With some reforms, it could be updated to meet our future educational goals of one unified computing discipline with several subspecialties. It is not true Computing Curricula 91’s advocated view that computer science and computer engineering have a common core is no longer valid [2]. It is even more harmful to state that successful computer engineering programs are tightly coupled to electrical engineering (EE) programs; they are just hosted in EE departments. In computing (science, engineering, or whatever you want to call it), students are still required to cover the nine subject areas identified in Computing Curricula 91. What do EE programs have to do with these nine subject areas? Sure, some minor areas are of interest to both EE and computing engineers, but they certainly are not the same discipline. In designing the new curricula, care should be given to future areas of computing. Major studies to predict most promising computing fields agreed on the following areas [6, 7]: VLSI design, parallel processing, computer networks design, distributed systems, algorithm design, object-oriented technology, AI, expert systems, and robotics. Depth coverage should be provided in these areas to provide sub-specialization. Based on the new curricula, the unified CSAB and ABET should define a new set of guidelines for accrediting computing programs.
- Licensing. Close cooperation between IEEE-CS, ACM, and the unified CSAB and ABET is needed to design licensing exams for the National Council for Engineering and Surveying. Such exams should cover the unified computing discipline while requiring an area of specialization. Such exams are to replace the long-running exams for licensing "computer engineers" or the newly adopted exams for licensing "software engineers" that are being offered in some states.
Let us not rush into separating fields of computing, let us work on the proper establishment of the field of computing for the generations to come. Let us stop that divorce between computing and software engineering—there is too much at stake.
Join the Discussion (0)
Become a Member or Sign In to Post a Comment