Several institutions have begun to actively work towards the integration of software process ideas in their courses. Those that we have identified are provided below. Their papers and reports that speak directly to the issue of software process education will be identified and accessible, where possible, from this area. You may also find information at institutions offering degree programs (BS and MS) in software engineering.
Review the proposal submitted under course and curriculum development to NSF that details some of our thoughts regarding the role of software process in the undergraduate CS curriculum. A revised version (2 years) has received funding (DUE-9555042). Comments are encouraged and solicited.
Designing Process-Based Software Curriculum. Proceedings of the Tenth Conference on Software Engineering Education and Training, Virginia Beach, VA, April 13-16, 1997. Los Alamitos: IEEE Computer Society Press. p. 28-38
Abstract: Computer science education traditionally has stemmed from its mathematical roots and has been related to practice through instruction of programming languages. Good software engineering practice, in contrast, requires expertise at a complex of activities that involve the intellectual skills of planning, designing, evaluating, and revising. Cognitive research has revealed that developing intellectual skills, such as these, requires (a) explicit instruction and practice, (b) in the context in which such skills will be applied, (c) in carefully structured ways. We are applying the techniques of cognitive apprenticeship, situated cognition, and reflective practice, based on our earlier successful application of such techniques, to the development of laboratories to accompany two undergraduate classes.
The first section of this paper provides the foundations from the computer science/software engineering domain that justify our effort. The second section provides the background in cognitive research we use to structure the learning environment and activities for the students. Section three provides an overview of the goals we have established as part of this development activity. Section four describes the activities we have implemented in the sophomore computer science course. We conclude our remarks with a discussion of problems and intended directions.
A Model for the Software Engineering Education Process. (Work in Progress)
Integrating Software Process in Computer Science Curriculum. Abstract Frontiers in Education Conference, November 5-8, 1997 in Pittsburgh, PA.
Abstract: Software process - planning, evaluation and modification of development activities based on metrics and measurement - must be integrated into the computer science curriculum if it is to stay apace with the needs of modern software organizations. We developed software process activities and implemented them in a laboratory in conjunction with the third course of the computer science major. Students used practices such as postmortem analysis and measurement-based planning to gain control over their program development activities. Students kept electronic design notebooks that included pre/post surveys and postmortems on activities. Students used the data from their programming projects, collected during reviews and postmortems, in planning the next project. We used cognitive apprenticeship techniques so that students could not only understand the concepts but be able to apply them.
At the end of the course surveys of the students indicated that they had a) understood the software process concepts, b) changed their own practices, c) appreciated the value of such practices and d) increased their commitment to a software engineering career. The laboratory developed in this project is not tied to a particular content but is generally applicable to any course with programming projects.
Program Comprehension Work in Progress
In Support of Student Process Improvement. Proceedings of CSEE&T'98, February 22-25, 1998 in Atlanta, Georgia.
Abstract: Preparing students for careers as software developers or software engineers requires more than applying computer science. Software engineering education needs better and more robust instructional models to support the education of new generations of software engineers. This paper discusses the major instructional strategies of software engineering education, and considers their pedagogical value. The paper reviews current activity in software engineering in the context of current industrial emphasis on process improvement and the quality paradigm. We present a four-part project model that we have developed and used that integrates recent research in cognitive psychology and software process practices. We suggest ways in which the processes involved in the project model provide the right environment to help students develop the skills truly needed to become accomplished practitioners.
[Process Education Top]
[Bibliographies] [Standards] [Research] [Resources]
The software engineering at Cal Poly involves two courses in which the students engage in project work. The course pages have a significant number of guides for developing documents and plans associated with a software process. Furthermore, the instructor uses student journals as a significant part of the assessment in the course.
[Process Education Top]
[Bibliographies] [Standards] [Research] [Resources]
The Software Engineering Administration program provides software managers with concepts, analytical skills, and methods of software engineering management of large, complex software systems, including those embedded in other systems. Graduates are prepared for positions requiring the management of people and resources in software intensive organizations.
Perhaps the most fundamental idea in modern computer science is that of interactive processes. Computation is embedded in a (physical or virtual) world; its role is to interact with that world to produce desired behavior. While von Neumann serial programming has it that computation-as-calculation uses inputs -- at the beginning -- to produce outputs -- at the end -- computation-as-interaction treats inputs as things that are monitored and outputs as actions that are taken over the lifetime of an ongoing process. By beginning with a decomposition in terms of interacting computational processes, we can teach our students a model of the world much closer to the one that underlies the thinking of most computer professionals.
Rethinking CS101 is a project to develop a curriculum for the first course in computer science based around the idea of computation as interaction.
[Process Education Top]
[Bibliographies] [Standards] [Research] [Resources]
Beginning in the Fall 1996, RIT is offering a BS in software engineering. Their curriculum design, including a year-by-year outline of requirements is here.
[Process Education Top]
[Bibliographies] [Standards] [Research] [Resources]
The Computer Science Department at the University of Virginia has embarked on a "serious" redesign of the undergraduate computer science experience - curriculum. Experience is perhaps a better term since they interpreted their charge as being more than simply specifying the courses and the content (rearranging the decks chairs does not necessarily improve the situation). Their rationale is presented below, as found in their documentation (see also their curriculum paper):
Formerly, our curriculum emphasized:
Practicing computer scientists have to deal with the antithesis of
what we taught:
A second major facet of their activity in curriculum is the identification of both knowledge and skills. This distinction appears to be in line with what may be referred to as the declarative/procedural distinction. Clearly, the skills areas indicates things that you should be able to "do" and applying particular information/knowledge in the performance of a task. Furthermore each topic in these broad areas is specified with a "depth of treatment" (Exposure, Familiarity, Mastery). Apparently they realize that certain activities are learned over repeated and differing exposure, this is particularly true of what might be termed "best practices." This is definitely the case where the outcome of the educational experience is the reflective practitioner. To accomplish this a differential treatment level is specified for each topic in each course. This combined with the closed labs where skills can be practiced and feedback offered makes a very interesting set of ideas.
[Process Education Top]
[Bibliographies] [Standards] [Research] [Resources]
Werth, L. (1994) An Adventure in Software Process Improvement. In Dìaz-Herrera, J. L. (ed.) Software Engineering Education. Proceedings of the 7th SEI CSEE Conference, San Antonio, Texas, January 1994. LNCS 750. Springer-Verlag.
Werth, L. (1995) Software Process Improvement for Student Projects. In D. Budny (ed.), Frontiers in Education 1995.
Describes an approach to teaching software engineering where each group member is assigned both a technical role and a process role. The author states undergraduates seem to find it easier to monitor and impose control when they are an actual member of the team, rather than acting as an outsider "interfering" with the technical team's efforts. She provides role descriptions and responsibilities for each defined role, both technical and process. There are numerous interesting logistical strategies used that should be carefully reviewed for possible inclusion in software engineering project offerings. For instance, the reviews are used and these meetings are open to other group members. Werth has certainly engaged in considerable thinking regarding the inclusion of process activities in her course.
The Software Quality Institute (SQI) is a multidisciplinary partnership between The university of Texas at Austin and the software and information systems organizations in Texas. Its mission is to inform and educate software producers and software users at the local, state and national levels about issues vital to the production and application of high-quality software. SQI draws upon the wealth of research and expertise available at UT-Austin as well as from a large pool of outstanding talent from industry and government. The Software Quality Institute is a unit within Continuing Engineering Studies, College of Engineering.
[Process Education Top]
[Bibliographies] [Standards] [Research] [Resources]
There are a variety of activities in progress at GATech related directly, or on the fringes, of software process education. The project that attracted my attention was the design course. The focus of this project was an interdisciplinary design course taught "early" in the students' program of study. This course identifies the knowledge and skills they believed important in design education. Included in their list are the phases of design (a process model of sorts) and activities typically subsumed under a particular phase (e.g., communication and representation).
A First Course in Design (GA Tech and Janet Kolodner) is an attempt to develop skills in design and an understanding of the design activity early in the curriculum. The crew at GA Tech designed an instructional experience for first year students. My understanding, and interpretation, is the course is not discipline specific, rather it addresses skills and ways of thinking about design -
our position is that this course, and subsequent design courses, should produce students who have the ability to reflect on their design activities and articulate critical decisions; who can solve problems flexibly using the science and technology they have learned; who have a deep appreciation of what other disciplines bring to their problems as well as a deep understanding of their own discipline; and who have strong social skills needed for teamwork.
From Case-Based Reasoning to Scaffolded Electronic Notebooks: A Journey by J. Kolodner
Supporting Collaboration and Reflection on Problem-Solving in a Project-Based Classroom by M. Guzdial, J. Vanegas, F. Mistree, D. Rosen, J. Allen, J. Turns, and D. Carlson
Effects with and of CSCL: Tracking Learning in a New Paradigm by J. Kolodner and M. Guzdial
Facilitating Learning During Group Design J. L. Kolodner and M. Guzdial
Also here are lecture notes, and support material for key practices identified and used in the Real-World Laboratory which is there version of software engineering in support of programming-in-the-large.
[Process Education Top]
[Bibliographies] [Standards] [Research] [Resources]
Starting in the 1995-1996 academic year the Computer Science Department began introducing "process" oriented material and activities into the first two courses in the Computer Science program.
This initiative, called "Doing Quality Work" (DQW), is a joint project between the Computer Science faculty and Watts Humphrey of the Software Engineering Institute. Dr. Humphrey, an internationally recognized expert in software process improvement, has developed DQW materials that incorporate many of the ideas that are practiced by the top software development organizations. In particular, concepts from the Personal Software Process (PSP) are embodied in the DQW approach.
The goal of this project is to help students become more successful in their academic work and better prepare them for the workplace.
[Process Education Top]
[Bibliographies] [Standards] [Research] [Resources]
[Process Education Top]
[Bibliographies] [Standards] [Research] [Resources]
The Air Force Academy has a long history of curriculum development that is SE based and thematic. See Richardson (Undergraduate Software Engineering Education. 1988 SEI Conference on Software Engineering. 121-144.) for a discussion of the rhyme and reason for their approach. Though their material may be dated perhaps access to their syllabi, etc. may offer new clues to the developments there.
[Process Education Top]
[Bibliographies] [Standards] [Research] [Resources]
The Software Engineering Institute at CMU has worked continually since its inception to provide curriculum support for the activities in which it is engaged. They have numerous curriculum modules in support of most life-cycle activities. In addition to the standard curriculum modules, they have also produced other educational material. Included in their collection is an educational module on engineering measurement which provides some interesting reading for those wanting to help students come to grips with the difficulties and activities of software measurement.
Abstract: Measurement is a fundamental skill for engineers. To facilitate teaching software engineering measurement, materials are provided to support three lectures: introduction to engineering measurement, measurement theory, and software engineering measures. These materials include lecture notes suitable for class handouts and additional information for instructors¬educational objectives, pedagogical considerations, suggestions for class projects, an annotated bibliography, and transparency masters for use in the delivery of the lectures.
Abstract: The ability to read and understand a computer program is a critical skill for the software developer, yet this skill is seldom developed in any systematic way in the education or training of software professionals. These materials discuss the importance of program reading, and review what is known about reading strategies and other factors affecting comprehension. These materials also include reading exercises for a modest Ada program and discuss how educators can structure additional exercises to enhance program reading skills. (pdf)
The annotated bibliography provided in this module has been extracted and made available as an HTML document.
This module consists of a comprehensive examination of the technical review process in the software development and maintenance life cycle. Formal review methodologies are analyzed in detail from the perspective of the review participants, project management and software quality assurance. Sample review agendas are also presented for common types of reviews. The objective of the module is to provide the student with the information necessary to plan and execute highly efficient and cost effective technical reviews. (pdf)
One of the strategic goals of the SEI for the next five years is personal software process. "Our mission is to help software organizations who want to enhance their capability to improve and manage software projects through the use of data driven decision making at the personal level." There is a web site devoted to PSP.
[Process Education Top]
[Bibliographies] [Standards] [Research] [Resources]
The CSSE is one of five research centres within the School of Computing, Information Systems and Mathematics. Its mission is to undertake research and technology transfer which will heighten the role of engineering measurement and engineering mathematics in the theory and practice of software engineering. The CSSE was established in 1986 to act as a focal point for staff carrying out research within the scope of its mission.
The CSSE has an impressive track record and is internationally renowned especially in the field of software measurement. It has been involved in three ESPRIT projects, two large SERC/DTI funded projects and has received funding from VALUE, the HEFCE, NATO and many organisations within industry (including Alcatel, BT and IBM). Its METKIT teaching materials have been sold to over forty universities world-wide; it plays host to the ami User Group and has sold 2500 copies of the well-known ami Handbook; it hosts the QUALMS User Group whose annual meeting is the main UK forum for software product measurement.
Pulford, K., A. Kuntzmann-Combelles, & S. Shirlaw (1996) A Quantitative Approach to Software Management. Workingham, England: Addison-Wesley.
[Process Education Top]
[Bibliographies] [Standards] [Research] [Resources]
J. Mead and A. Shende are working on "An Assertion-Based Programming Methodology for Introductory Programming Courses" under an award from NSF. Currently no particulars are posted on their site. The abstract indicates the development of a text to supplement introductory courses language independently.
[Process Education Top]
[Bibliographies] [Standards] [Research] [Resources]
Faculty are working on NSF CCD project for apprenticeship learning in CS1 and CS2. Their stated view is that students learn best by studying the work of experienced designers. The approach is philosophically consistent with the premises provided by cognitive apprenticeship, though perhaps not as complete. Their approach is also based in OO, albeit C++, so deserves careful review. They are posting developed classes for use in CS1 and CS2.
Abstract: Our philosophy is that CS1/CS2 students learn best as apprentices, by studying the work of more experienced program designers and writers and by extending and modifying programs provided by these experienced programmers. Object-oriented programming supports this philosophy well and permits our students to explore a realm of programs not possible using a more traditional "structured" approach. Our approach emphasizes using objects before creating them, reading and modifying programs before designing them. Although our philosophy transcends a particular object-oriented language, we have chosen C++ for our courses; our approach facilitates its use by novices. In this paper we discuss our approach, and suggest simulation as a rich area for case studies, labs, and assignments when employing this objects early approach. We provide details of two simulations we have used in our courses: a simulation of the card game war and a queueing simulation.
O. Astrachan & D. Reed (1994) AAA and CS1: The Applied Apprenticeship Approach to CS 1(postscript)Abstract: We have developed an application-based approach to introductory courses in computer science. This approach follows an apprenticeship model of learning, where students begin by reading, studying, and extending programs written by experienced and expert programmers. Applications play a central role since programming constructs are motivated and introduced in the context of applications, not the other way around as is the tradition in most texts and courses. Under our applied approach, students are able to learn from interesting real-world examples, the synthesis of different programming constructs is supported using incremental examples, and good design is stressed via code reuse. In this paper,we provide several examples of our method as well as pointers to all the material we have developed which is freely available electronically. The philosophy underlying this method transcends a particular programming language, but we present our examples using C++ since that is the language we use in our CS 1 and CS 2 courses. We have also used this method in a Pascal-based CS 0.5 class with equal success.
[Process Education Top]
[Bibliographies] [Standards] [Research] [Resources]
Offers a course referred to as the "Software Process Practicum". The Software Process Practicum is designed to immerse the working student in topics relevant to software process improvement and quality management, and to introduce them to the supporting theory. Topics include process management frameworks (capability maturity model, ISO 9000), measurement for process improvement, and key team skills necessary for effective collaborative software engineering efforts. At the end of the course the student will be able to demonstrate that the software development process can be managed and controlled, leading to increased software quality.
A Technical Report describing the class is available. You may also find relevant material at the Pacific Software Research Center where researchers are considering generator based program development and formal methods.
[Process Education Top]
[Bibliographies] [Standards] [Research] [Resources]
Seattle University offers a Master of Software Engineering Program. One of the requirements in the program is a course in software project management. In this course they have been teaching personal software process. It may also be instructive to review their MS project process to see how a defined process operates in their environment.
[Process Education Top]
[Bibliographies] [Standards] [Research] [Resources]
The title of the program is significant. The words "engineer" and "engineering" (ingènieur and gènie in Quebec) are registered. People can call themselves engineers and can claim to be practicing engineering only if they are graduates of a program that has been accredited by the Canadian Engineering Accreditation Board (CEAB). A department that offers an unaccredited program with the word "engineering" in the title lacks credibility within the industry and may even suffer legal action from the CEAB. Consequently, the choice of the title "Software Engineering" was not undertaken lightly. The option was designed to meet the accreditation criteria of the CEAB. It is one of the first such programs in Canada.
Comments should be sent to
Richard Upchurch (rupchurch@umassd.edu)
This document
Created: March 8, 1996
by RLU
Modified: March 9, 1998