Abstract :
The teaching of software engineering skills is traditionally seen as an activity which follows the acquisition of the ability to `program´. It is proposed that initial software engineering skills can be taught in conjunction with the development of programming skills, by providing a problem-oriented curriculum based on the use of notations to describe `things´. This approach is enhanced if a high degree of integration exists between the concepts and principles introduced to the learner during the study of notations and the organisation of the software development system used for the application of those concepts and principles. This paper argues that initial software engineering skills can be introduced at an early stage so that fundamental and general principles can be applied as soon as possible. Secondly, it argues that a practical environment can be organised which builds directly on, and which exemplifies, the same principles. The approach described provides the learner with a model of systematic software development that is transferable, in whole or part, to conventional less regular, unfamiliar or novel environments