A key objective of any engineering program is to provide graduates with the tools necessary to begin professional engineering practice. As Chapter 3 indicates, an important guiding principle for this document is that software engineering education should include student experiences with the professional practice of software engineering. Subsequent chapters discuss the content and nature of such experiences, while this section provides rationale and background for the inclusion of professional practice elements in a software engineering curriculum.
B.11.Rationale
Professionals have special obligations requiring them to apply specialist knowledge on behalf of members of society who do not have such knowledge. All the characteristics of engineering discussed in Section 2.3 relate, directly or indirectly, to the professional practice of engineering. Employers of engineering program graduates often speak to these same needs [Denning 1992]. Each year, the National Association of Colleges and Employers conducts a survey to determine what qualities employers consider most important in applicants seeking employment. In 2013, employers were asked to rate the importance of candidate qualities and skills on a five-point scale, with five being “extremely important” and one being “not important.” Communication skills (4.63 average), ability to work in a team (4.6), problem-solving skills (4.51), planning and organizational skills (4.46), ability to obtain and process information (4.43), and ability to analyze quantitative data (4.3) were the most desired characteristics [NACE 2013].
Graduates of software engineering programs need to arrive in the workplace equipped to meet the challenges of society’s critical dependence on software and to help evolve the standards and practices of the software engineering discipline. Like other engineering professionals, when it is appropriate and feasible, software engineers should seek to base decisions on quantitative data, but they must also be able to function effectively in an environment of ambiguity and avoid the limitations of oversimplified or unverified modeling.
B.12.Software Engineering Code of Ethics and Professional Practices
Software engineering as a profession has obligations to society. The products produced by software engineers affect the lives and livelihoods of their clients and the product users. Hence, software engineers need to act ethically and professionally. The preamble to the joint ACM/IEEE Software Engineering Code of Ethics and Professional Practice [ACM 1998] states,
Because of their roles in developing software systems, software engineers have significant opportunities to do good or cause harm, to enable others to do good or cause harm, or to influence others to do good or cause harm. To ensure, as much as possible, that their efforts will be used for good, software engineers must commit themselves to making software engineering a beneficial and respected profession. In accordance with that commitment, software engineers shall adhere to the following Code of Ethics and Professional Practice.
To help ensure ethical and professional behavior, software engineering educators have an obligation not only to make their students familiar with this code, but also to find ways for students to engage in discussion and activities that illustrate and illuminate the code’s eight principles, including common dilemmas facing professional engineers in typical employment situations.
B.13.Curriculum Support for Professional Practice
A curriculum can have an important, direct effect on some professional practice factors (such as teamwork, communication, and analytic skills), while others (such as a strong work ethic and self-confidence) are subject to the more subtle influence of a college education on an individual’s character, personality, and maturity. In this volume, Chapter 4 identifies elements of professional practice that should be part of any curriculum and expected student outcomes. Chapters 5 and 6 contain guidance and ideas for incorporating material about professional practice into a software engineering curriculum.
Many elements, some outside the classroom, can significantly affect a student’s preparation for professional practice. Examples include involvement in the core curriculum by faculty with professional experience; student work experience as an intern or in a cooperative education program; and extracurricular activities, such as technical presentations, field trips, visits to industry, and activities sponsored by student professional organizations.
The task of determining the curriculum guideline’s scope and content has drawn upon a range of sources. Where appropriate, sources are cited in the relevant chapters. These sources include prior initiatives that have sought to codify knowledge in software engineering and related areas:
-
The original 2004 Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering was developed by the IEEE CS and ACM. This in turn was an element of the “Computing Curricula 2005,” which developed guidelines for programs in computer engineering, computer science, information systems, information technology, and software engineering.
-
The Conference on Software Engineering Education & Training (CSEE&T), originally initiated by the Software Engineering Institute in 1987, is now one of many software engineering conferences sponsored by the IEEE CS, ACM, and other professional bodies.
-
The Guide to the Software Engineering Body of Knowledge (SWEBOK) was produced by the IEEE CS to identify a body of knowledge needed for the practice of software engineering [SWEBOK 2014], and it also undergoes periodic updating and revision (www.swebok.org). One of the objectives of the SWEBOK project was to “provide a foundation for curriculum development.” To support this objective, SWEBOK includes a rating system for its knowledge topics based on Bloom’s levels of educational objectives [Bloom 1956]. It should be noted, however, that SWEBOK is intended to cover the level of knowledge acquired after four years of practice and also intentionally does not address non-software-engineering knowledge that a software engineer must have.
-
The development of ideas about the field of systems engineering is in turn dependent upon software engineering in many ways. Although there are no undergraduate curriculum guidelines for systems engineering, a Graduate Reference Curriculum for Systems Engineering (GRCSE) has been developed (www.bkcase.org/grcse).
Share with your friends: |