This project focuses on the development of approximately 50 freshman laboratory projects that provide significant experiences with software design issues as well as with traditional topics in algorithms and data structures. Also, approximately 15 large scale software design projects will be developed that will permit students to explore object-oriented design methodologies using state-of-the-art development tools. The over-arching goal is to make the software design process an important focus in the computer science curriculum and to promote a hands-on approach to learning about design. The outcome of this project will be directed to computer science majors and other majors interested in learning about the software design process in depth. The methodology to be used is to create interesting laboratory projects which examine design themes that occur in standard applications, to explore problem solving and visualization in mathematics and science, to illustrate processes using algorithm animation and simulation, and to investigate the design of software using object-oriented models. To assist this methodology the project team will develop a robust collection of toolkits to support the freshman experience and to integrate industrial strength C++ development tools and libraries to support the upper level student projects. This project has significance and will have national impact. The proposed laboratory projects are more substantial and interesting than any currently available. They provide practical design experience by making connections to typical applications and related disciplines. The projects will work on multiple computer platforms and so will be useful at many institutions. The dissemination will be via the World-Wide-Web, journals, and textbooks.