The new context for software engineering education and training

The ‘‘software crisis’’ of the last decade was characterized as one of low programmer productivity and poor software quality Gibbs, 1994. This description was a shot across the bow for computer science educators, who shared the blame for the fact that their graduates were performing poorly. Then arose a severe shortage of software professionals––perhaps partly because of their low productivity and the need to fix their poor quality products (e.g., Y2K problems). Traditional computer science departments were also unable to graduate enough software engineers to meet the seemingly insatiable demand. Could not computer science and/or software engineering educators do better? The creation of many software engineering programs (at both undergraduate and graduate levels) and proposals for many model curricula have provided substantial help. There is no doubt that software engineering and software engineering education are evolving into a true engineering discipline. There are many indications of this new direction: CCSE efforts, SWEBOK initiative, the IEEE/ACM codes of ethic, and the Conference on Software Engineering Education and Training (CSEE&T) which will be held for its 17 year in 2004. Many software engineering problems have faded, or perhaps mutated, during the past few years––only to be replaced by new ones that seem at least equally challenging for the software engineering education and training community. Software engineering has been punctuated by rapid changes in both the technical and politico-economic conditions under which it is practiced. On the technical side, there have been changes in the computing platform. Today’s software engineers must know how to deal with applications built from software components that are distributed over the web. The basic conceptual model of how such software operates is, frankly, quite convoluted and therefore more likely to detract from than to improve overall software quality. But this model is a fait accompli. The consequence is that a modern software engineering education should cover technical concepts that most currently practicing