Expert observers of the software industry agree that it is woefully inadequate to meet the needs of the information age (e. g., Gibbs, 1994, p. 86). Simultaneously, the education we provide students continues to be in the scientific/mathematical tradition of computer science, which assumes that the foundations provided therein are sufficiently mature and robust to support the emergent, and/or existing, commercial practices. Both the problems in the software industry and evidence about how students learn indicate that current computer science curricula are inadequate to prepare practitioners. Software process issues need to be taught explicitly and woven into a curriculum that delivers the fundamentals of good practice integrated with the substance of good science. The purpose of this project is to develop laboratories for a subset of the five course software sequence of the computer science major. These laboratories will use a skills-based approach to help students identify and reflect upon the efficacy of their practices. The development of the laboratories will proceed by user-based design principles in which prototypes will be tried and evaluated formatively. The resulting laboratories will be evaluated within and across courses, resulting in a test both of individual laboratories and the cumulative effect of the entire curriculum. The project will produce an on-line system that allows students to build portfolios of their work and an on-line system for faculty that will record the types of problems being used in the curriculum. Materials to support the use of these systems will also be developed.