next up previous contents
Next: ABET-mandated outcomes Up: Outcomes Previous: Outcomes   Contents

The CS&E profession

It is a goal of this department to provide a engineering education to all of its students.1.5 Per Accreditation Board for Engineering and Technology:

Engineering is the profession in which a knowledge of the mathematical and natural sciences, gained by study, experience, and practice, is applied with judgment to develop ways to utilize, economically, the materials and forces of nature for the benefit of mankind.1.6
The American Heritage Dictionary defines engineering as:
The application of scientific principles to practical ends as the design, construction, and operation of efficient and economical structures, equipment, and systems.
Theodore Von Karman, American rocket scientist and engineer stated the distinction between science and engineering as follows:
Scientists study what is.
Engineers create what is not.
For a discussion of the history of definitions of engineering, see Appendix A of [R20].


We believe that the engineering discipline is in the midst of a phase transition of some importance: the fundamental methods of engineering from concept through design and implementation are advancing to take advantage of advances in modern technology. In the building-construction industry, which has and likely will continue to follow ``traditional'' engineering approaches, architects design buildings that get built by construction teams that include carpenters, bricklayers, etc. In the past, that division of labor has been followed when the designers were engineers: the engineers generate designs for things that get fabricated by technicians and/or a manufacturing team. The metaphor is that the designers ``throw the design over the wall'' to the implementation team, implying that there need not be a lot of personal communication between the two groups. Usually, some number of prototypes (trial implementations of the design) are fabricated for testing and possible redesign before the design is finalized and delivered to the manufacturing team.

Advances in information technology are now replacing this traditional cut-and-try approach with what we call the ``simulate-and-fabricate'' approach:

Under this simulate-and-fabricate approach, designs are captured/expressed in a formal notation that has well-defined semantics, e.g., logic diagrams, C++ code, VHDL, AutoCAD, etc.1.7 The behavior of the design is analyzed for performance and validity both statically, via design-rule checkers (e.g., Lint for C code), and dynamically, via simulation (a.k.a., virtual prototyping), symbolic execution, and, in the case of software, real execution.

Modern design engineer iterate through many virtual prototypes usually without the aid of technicians or others, until the simulations and rule-checkers indicate that the design is sound. Then a prototype is built using automated fabrication methods with say a 99% probability of success, but the turn-around time may be many weeks, e.g., the time to spin an ASIC chip. If the prototype passes its acceptance tests, the design is approved and committed to manufacturing. Thus the modern design engineer must be skillful at expressing designs in the appropriate formal notations and at using computerized tools for design exploration. Becoming skilled in the use of such notations and tools requires a lot of practice.


The things that computer scientists and computer engineers design are mostly software.1.8What had happened is that software engineering exists under the new simulate-and-fabricate paradigm by default:

In the 1960s, many companies tried to apply the classical engineer/technician organization of the cut-and-try paradigm to the development of software. The designers were called ``analysts'' and the technicians were called ``coders''. That organization didn't work due to the many rapid redesign and recoding cycles that common in software development, e.g., for debugging, and because of the overhead of communicating designs from analysts to coders.

The classical engineering structure quickly fell out of favor with software engineering to be replaced by a structure more like that of surgeons, who do not simply make a diagnosis and throw a prescription over the wall for a surgical procedure to be implemented by technicians who specialize in cutting.1.11 The need for quick re-evaluation as new information unfolds and/or problems develop during the procedure makes the classical engineering paradigm infeasible.

The most common modern organization structure is that design, implementation, and unit testing gets handled by the design team, while systems-level testing is done by a separate testing team that is involved in the project from its inception. Sometimes the size of the testing team exceeds that of the design team.


next up previous contents
Next: ABET-mandated outcomes Up: Outcomes Previous: Outcomes   Contents
Tom Payne 2003-09-04