The need to fit graduates for industry is a major determinant of what is taught to software engineering students.

It results in syllabuses including subjects that are delivered when circumstances allow rather than in a strategically planned order - and often to students who lack prerequisite knowledge, says Felix Redmill.

Although teaching is based on imparting knowledge, we need to plan its delivery so that it facilitates both further learning and the development of persons, personalities, and professionalism. This requires strategic planning.

We should consider what we want our software engineering students - and engineers - to Be as well as what we want them to Know. The answers depend on their stage of development.

It is possible to identify three roles that engineering graduates are expected to fulfil - competent technician, responsible engineer, and professional engineer - and these can form the basis of a strategically planned curriculum.

Three roles

To be a technician, a student or graduate must possess the skills and knowledge to do things, in the field and in the laboratory. To be a responsible engineer the graduate must have superior knowledge, at least in a particular field, and be capable of accepting responsibility, exerting authority, and making decisions.

To be a professional engineer, the graduate must, in addition to fulfilling the former two roles, adhere to high standards of integrity and behaviour, be able to manage higher levels of responsibility and authority, be ethically aware, and be capable of understanding the relevance of their work in a broad social and political context.

Although new graduates are not considered to be Professionals (with a capital 'P'), they are expected to be professional - for example, in their judgement and behaviour. Yet in our curriculum it is unusual to groom students in professionalism.

The three roles are not mutually exclusive. Technicians must have knowledge, engineers must possess skills, and both are expected to display professionalism. But while knowledge needs to be disseminated throughout the curriculum, and discipline and professionalism should be inculcated from the start, there is a discernible evolutionary path.

The roles define three stages of a process, and the basis of strategic planning of a curriculum. They also provide identifiable targets in educational and professional development. They are 'targets' rather than 'landmarks' because, although the stages are qualitatively distinct, they cannot be bounded precisely in either content or time.

At no point in the curriculum does a student become a perfect technician or engineer. The acquisition of skills and knowledge, development of the ability to apply them, as well as the development of professionalism, are all career-long processes.

But skills form a basis for later learning, and their development should be planned to facilitate it. Learning builds on what is already known, and the order in which information is presented can, with strategic thought, be optimised.

For planning purposes, the three stages may be considered sequential, but there is also concurrency. None of the roles should be neglected in any of the stages, but there should be a greater emphasis on inculcating technician's skills in the first stage, engineering knowledge and discipline in the second, and professionalism in the third.

The three stages do not need to be of equal duration, but defining them as one year each in a three-year course may be convenient, always recognising that they will overlap and that they signify changes of emphasis rather than mutual exclusivity.

When apprenticeships were the order of the day, they lasted for several years, and, in the current plan, laying an adequate technical foundation would take at least the first year. The temptation to make the skills stage short for the convenience of lecturers who prefer to concentrate on theory should be resisted.

The engineering stage could not be completed in only the second year, for the theoretical content, having begun in the first stage, would run into the third - and beyond, into career-long development. Similarly, principles of professionalism should be introduced in the first stage, developed in the second, and included in all subjects as a matter of course in the third.

Planning stage one

It is likely that the notion of a technician is more familiar to traditional engineering disciplines (electrical, mechanical, civil) than to software engineering.

In software engineering there appears to be little differentiation between the technician and the engineer, and many who do no more than write code or test systems are referred to as 'software engineers'.

But whether or not the word 'technician' is used - and there may be no appetite for it - the principle of creating a skills base on which to build engineering and professional knowledge, understanding and ability is crucial.

The first-stage syllabus cannot be defined absolutely, for each educational institution bases its curriculum on its own specialities and goals. However, there are crucial principles that should be taught and concepts that should be inculcated.

Technicians need to understand the characteristics and functions of the components used in the construction of their systems - i.e. the principles on which processors operate and software technology.

The creation of software components requires knowledge of programming, but this should be based on an understanding of language features, the design of algorithms, and structured programming rather than the throwing together of programs.

In other engineering disciplines, creating and interconnecting components, are known to require confirmation of attributes other than functionality, for example the reliability and safety of connections (e.g. electrical wiring) and systems (e.g. mechanical structures).

Thus, in the context of programming and building simple systems, testing and quality assurance should be taught as fundamental necessities.

The twin goals of meeting a requirement and demonstrating that the requirement has been met to the necessary tolerance, demand this. Neglect of this reinforces the notion that testing is an extra activity, not necessary if it can be assumed that a job has been done satisfactorily.

An essential engineering principle is feedback. All technicians should be competent in seeking feedback and carrying out measurement (for example, via testing) to acquire it. They should know the potential for inaccuracies in their measurements, be aware of assumptions and understand their effects on the conclusions that they draw from the feedback.

The technician's role is not merely that of doing practical things but also of learning to think about how and why they are done and how appropriate they are to what is needed.

Stage-one education would not be considered complete without instruction on tools - but the informed selection and application of tools to meet defined goals and not merely the mechanistic use of proprietary tools. And to omit maintenance would be to suggest that design is always perfect and permanent.

Recognising and observing symptoms, reasoning about them, diagnosing their causes, identifying and analysing the options for correction, and choosing, implementing and testing corrective actions should be taught.

Quality assurance as a formal subject would, perhaps, be better understood at the second stage, but the culture of demonstrating that goals have been achieved should be inculcated from the start, and an essential aspect of this is the collection, structuring, storage and use of appropriate evidence.

It is from testing and measurement that much of the evidence is derived, so it is in their context that the essentials of quality assurance could usefully be inculcated.

The above are examples of principles to be introduced in stage-one education. They do not preclude the teaching of other subjects, including specialist subjects.

What is important is that fundamental principles should be taught, so that right from the start students develop an understanding, not only of this or that subject, but of engineering. If education does not set out to inculcate principles, it is not engineering education.

First-stage courses should lay the foundations for later courses by introducing the principles later to be explained theoretically. Practical work should develop skills that reinforce the principles and develop the student into a competent technician.

Stages two and three

Just as the development of technicians' competence does not cease at the end of stage one, engineering development does not commence at stage two. As proposed above, the seeds of engineering should be sown in stage one.

In the second stage, the focus should turn from the technician's knowledge of components to the engineering function of design, which should meet both technical objectives and others such as safety, reliability and cost.

This requires decision-making based on an understanding of risks and trade-offs. In stage three the subject should be taken further by the consideration of the ethical, political and societal aspects of modern technological decision-making.

University education often gives the impression that design is carried out by an individual. But hierarchical decomposition reveals a strong requirement for architecture, planning, teamwork, coordination, and documentation.

Identifying options, understanding their merits and disadvantages, and making choices between them are essential.

Thus, addressing design, testing and measurement at the second stage demands not only a technical focus, but also attention to responsibility and authority, project management and management in general, and decision-making. Indeed, engineers should be taught that design must have an eye not only to functional requirements but also to testing, maintenance and change.

Subsystems raise questions about the interfaces between them, the assumptions on which they are based and the need for interaction and communication. Thus, the concepts of communication protocols and layered communication models arise naturally from design concepts and may be taught in context, as may the principles of integration and system testing.

In addition, stage-two education should develop the stage-one diagnostic skills into the ability to identify, define, and express problems, and to specify and design solutions.

This is closer to engineering than the small ability to solve theoretical problems set by others on which so many undergraduate courses and examinations are founded. In industry it is frequently the case that problems once specified are trivial to solve, with the real difficulty lying in diagnosis and problem definition.

A modern engineering curriculum should not merely instil technical competence but also prepare graduates to fulfil the engineering profession's responsibilities to society and to understand and respect society's expectations of engineers.

Engineering knowledge is by no means complete at the end of stage two, but in stage three the theme of professionalism should be included in all its subjects.

The ethical, legal, political, and societal issues involved in engineering should be made explicit in different contexts. In a report, the Institute of Education emphasised the need for ethical issues in the use of modern technology to be discussed in schools.

Clearly such discussion should be continued in engineering degree courses and, by stage three, should have arrived at a point of informed debate. Risk issues form a significant part of such debate, and a course on risk is necessary, if not at stage two then certainly at stage three.

Other topics that should be covered are systems engineering and human factors. It is important not only to understand systems in the large, in both their technical and social contexts, but also to recognise the multi-disciplinary nature of successful socio-technological systems.

Familiarity with the psychology of human behaviour is essential to design, the assessment of risks, and dealing with customers. Sustainability is also a topic appropriate to stage three.

The emphasis of each stage should be reflected in its examinations. For example, stage two questions might require students to state the assumptions made in designing a subsystem in isolation, or in planning its testing, or to describe the risks and advantages implicit in the assumptions and how planned integration testing may reduce them. At stage three, questions on design might require a consideration of environmental factors.

Onus on educators

Strategic planning of the engineering curriculum should not be a luxury, carried out if time and circumstances allow, but an essential function. It requires teachers who understand, contribute to, and work within the strategy, and planners who are project managers and leaders.

If the novices who arrive at the commencement of stage one are to leave as professionally-minded graduate engineers at the end of stage three, a culture of professionalism must be inculcated from the start.

Norms can and should be taught, but culture is promulgated by the example of living by the norms. Lecturers are role models and should show themselves to live by the norms. They must also place high expectations on the students, and the strategic planners must place high expectations on the lecturers. The quality of engineering education depends on the educators.


Three stages of an engineering curriculum are identified. By the end of the first, the student should be a competent technician, with the skills and knowledge on which to base the development of an engineer.

The second stage should address the additional qualities expected of an engineer, and the third the qualities essential to a modern technological professional. Theoretical and practical instruction should be planned to meet each stage’s goals, and to lay the foundation for subsequent stages.

This article has offered some thoughts on how a model, based on the three stages, may facilitate strategic planning of the software engineering curriculum. It addresses not merely what we want our engineering students to know, but also what we want them to be.