The Education of Software Engineers Today


Efforts to establish a standard software engineering curriculum have continued until today. One of these attempts is presented in the first draft of the Computing Curriculum ”Software Engineering created jointly by The Joint Task Force on Computing Curricula of the IEEE Computer Society and the Association for Computing Machinery, published on July 17, 2003 ( http://sites.computer.org/ccse/volume/FirstDraft.pdf ). This volume is one out of four created by the IEEE Computer Society/ACM Task Force on the Model Curricula for Computing. The job of this Task Force was to review the 1991 curricula and develop a revised and enhanced version that addresses developments in the computing world in the past decade and will sustain it through the next decade. This effort yielded five volumes: an overview volume that describes general principles and commonalities among all of the specific discipline volumes, and four specific discipline volumes (Computer Science, Computer Engineering, Software Engineering, and Information Systems). The effort involved in this task reflects the diversity of the computing field. Additional information can be found at www.computer.org/education/cc2001/ .

Eleven principles influenced the creation of the software engineering volume in order to capture the special nature of software engineering that differentiates it from other computing disciplines. From these 11 principles we list the following four principles to which, in our view, this book is closely related :

  • Software engineering draws its foundations from a wide variety of disciplines (Principle 2).

  • Development of a software engineering curriculum must be sensitive to changes in technology, developments in pedagogy, and the importance of lifelong learning (Principle 4).

  • Guidance on software engineering curricula must be based on an appropriate definition of software engineering knowledge (Principle 7).

  • The Computing Curriculum ”Software Engineering volume must include exposure to aspects of professional practice as an integral component of the undergraduate curriculum (Principle 10).

The preceding principles are selected because they highlight the connectivity of software engineering to other areas. Inside the community of software engineering some voice the opinion that the way university courses present computer programs to students does not reflect the actual complexity involved in the process of developing computer programs. As emphasized throughout this book, there are two aspects to that complexity. The first refers to the cognitive complexity of the actual process of developing software systems; the second refers to the social complexity of software development environments, which includes, among other factors, customers and team members . In this respect, Denning [Denning92] says that our teaching is organized as a continuing presentation of important facts, methods , and models that are transferred to the students as a subset of the body of knowledge constituting the discipline. He recommends that software engineering educators should recognize a second kind of knowledge that should be addressed in the software engineering education. This knowledge should include topics such as knowing how to listen, to design, to care, to be organized for new learning, to be a professional, and even to be trustworthy and honest. We believe that this book s adherence to this call is clear.

According to Lethbridge [Lethbridge00], a similar conception with respect to software engineering education is expressed by software practitioners. Lethbridge presents the result of a survey of software practitioners conducted during the summer and autumn of 1998. The survey was designed to check what knowledge is important to the participants and to better understand participant educational and training needs. Among other conclusions, the following two findings are relevant to the message conveyed by this book.

The first finding addresses the topics that software practitioners find most important for their work. According to that survey, the 10 (out of 75) most important topics that every software engineer should presumably know are specific programming languages, data structures, software design and patterns, software architecture, requirements gathering and analysis, human-computer interaction/ user interfaces, object-oriented concepts and technology, ethics and professionalism , analysis and design methods, and, finally, presenting to an audience.

The second finding presents a list of topics for which, according to the participants, there is a necessity for improvement in university education. The first seven topics in this list are software design and patterns, requirements gathering and analysis, software architecture, human-computer interaction/user interfaces, object-oriented concepts and technology, ethics and professionalism, and, finally, analysis and design methods. Examination of the nature of these topics reveals that most of them belong in the skills and attitudinal components of the discipline.

Indeed, these two findings illustrate the practitioners perspective of software engineering as a mixture of scientific, technological, and human-oriented dimensions. This book addresses the third dimension.




Human Aspects of Software Engineering
Human Aspects of Software Engineering (Charles River Media Computer Engineering)
ISBN: 1584503130
EAN: 2147483647
Year: 2004
Pages: 242

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net