Software Process Education

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.

(Alphabetical Listing)
Bucknell UniversityCal Poly
Central Michigan UniversityConcordia University
Duke University
Embry-Riddle
Aeronautical University
Georgia Tech MIT
Oregon Graduate Institute
of Science & Technology
Rochester Institute
of Technology
Seattle University
Software Engineering Institute
South Bank University (UK) US Air Force Academy
University of Houston-Clear Lake
University of Massachusetts
Dartmouth
University of Texas University of Virginia


Computer Science Department

UMass Dartmouth

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.

Reports/Publications

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.

The Acquisition of Expertise in Software Engineering Education. Frontiers in Education, November 4-7, 1998, in Tempe, AZ.

Abstract: Our goal in this paper is to examine the nature of expertise in software development and then to analyze the components of process education necessary to promote its development. This analysis includes three aspects of expertise: (a) declarative knowledge ("knowledge that"), (b) procedural knowledge ("how to knowledge"), and (c) metacognitive knowledge (self-monitoring, agency, reflection). These "flavors" of knowing play an integral role in software development. Traditional education with its emphasis on textbooks and lectures as its primary pedagogical tools can teach declarative knowledge, but that knowledge is not automatically connected with doing. The major impact of process education has been to provide a more effective learning environment that focuses on the development of procedural knowledge. It has become clear that procedural and declarative knowledge alone are not sufficient for the development of expertise. Students need to learn how to reflect on both the problem at hand and on the ways they are solving the problem if they are to become agents for their own improvement. Although process educators are often aware and desirous of facilitating metacognitive knowledge, it is rarely addressed explicitly. In this paper we connect issues of metacognitive knowledge to the evolution of software development skill. Our analysis leads to recommendations for structuring software engineering education activities throughout the studentsŐ program of study to maximize the development of all three components of expertise. We include examples from our work on integrating process activities in undergraduate computer science instruction.

Material Developed

Working Notes


Computer Science Department

Cal Poly

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.


Software Engineering Administration Concentration

Central Michigan University

Statement of Purpose for the Concentration

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.


Innovations in Introductory Computer Programming

MIT

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.


Software Engineering Department

Rochester Institute of Technology

BS Degree in Software Engineering

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.


Computer Science

University of Virginia

Computer Science Curriculum

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:

  1. The construction of relatively small programs, at most a few hundred lines.
  2. The use of a programming language that is used rarely outside of undergraduate courses.
  3. The development of programs "afresh" for each assignment course.
  4. A development lacking modern tools.
  5. Programming in isolation or in small groups at best.
  6. The belief that if a program "works", it is acceptable.
  7. An informal development approach rather than one that is rigorous and exercises analytic skills.
Practicing computer scientists have to deal with the antithesis of what we taught:
  1. Software systems that are often thousands or even millions of source lines long.
  2. Tasks that involve modifying such systems rather than developing them.
  3. Existing systems that might be very old but remain important and have to be maintained.
  4. Tool-rich working environments.
  5. Development efforts that are undertaken by large teams.
  6. The realism of cost performance trade-offs in business contexts.
  7. System development according to mandated processes and standards.
  8. Expenditure of considerable effort on tasks other than source-code development.

Clearly, their goals are in line with the concerns encountered in software process education.

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]


Department of Computer Science

University of Texas at Austin

SEI Software Process Curriculum Module by L. Werth. (pdf) Files

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.

Software Quality Institute

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.


College of Computing

Georgia Tech

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.

Pertinent articles from the design group:

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

Other GA Tech works that are applicable.
GA Tech Curriculum Paper (postscript)
Software Psychology Requirements for Software Maintenance Activities
Reverse Engineering (white paper)

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.


Computer Science Department

Embry-Riddle

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]


Research Institute for Computing and Information Systems

University of Houston - Clear Lake

The revised Master of Science in Software Engineering contains a software process track.
Curriculum Paper

US Air Force Academy

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]


Software Engineering Institute

Carnegie Mellon University

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.

Ford (1993) Engineering Measurement Module

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.



Deimel and Naveda (1990) Reading Computer Programs: Instructor's Guide and Exercises

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.

Collofello (1988) The Software Technical Review Process.

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.

Other SEI Material


Centre for Systems and Software Engineering

South Bank University, London, United Kingdom

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.

Their Products

Their Projects

Pulford, K., A. Kuntzmann-Combelles, & S. Shirlaw (1996) A Quantitative Approach to Software Management. Workingham, England: Addison-Wesley.


Department of Computer Science

Bucknell University

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.


Computer Science Department

Duke University

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.

References

O. Astrachan & C. Bono (1994) Using simulation in an objects-early approach to CS1 and CS2 (postscript)

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.


Department of Computer Science and Engineering

Oregon Graduate Institute of Science & Technology

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.


Department of Computer Science
and Software Engineering

Seattle University

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.


Department of Computer Science

Concordia University

Beginning in the September 1998 Concordia University will offer an option within the Computer Science Program. The option being software engineering.

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.


To Top of Software Process Collection
To UMass Dartmouth
To CIS Department at UMass Dartmouth

Comments should be sent to

Richard Upchurch (rupchurch@umassd.edu)
or
ciswebster@wwwmail.umassd.edu
Computer and Information Science Department
University of Massachusetts Dartmouth
285 Old Westport Rd.
N. Dartmouth, MA 02747-2300
RUpchurch@umassd.edu

This document
Created: March 8, 1996
by RLU

Modified: September 1, 1998