Typical introductory courses emphasize programming constructs and language features, and are built around many simple programming assignments that encourage students to use those constructs and features, on a feature-by-feature basis. This has the effect of inculcating a quick and dirty, programming-in-the-small mentality. Even if responsible development methods are carefully taught in class, the assignments tend to be so small and simple, any methods, other than just writing the code, come to be seen as a nuisance, rather than an aid to the process. Introductory students are usually required to work individually, rather than in teams, to ensure each acquires a minimum understanding of the fundamentals. This has the effect of encouraging students, during the formative stages, to develop individualistic work habits, which are often inconsistent with working in teams. Even though group programming projects may be imposed on students in later course work, these experiences are often too late, or otherwise insufficient, to offset the habits and styles established during the CS1 and CS2 courses. Although laboratory components are becoming more common for upper division Computer Science courses, they are still relatively uncommon at the CS1 and CS2 level. We propose a laboratory component for CS1 and CS2 that will emphasize programming-in-the-large and group projects. These and other aspects of the lab will help students, in a positive way, to become comfortable with practices and processes considered essential to do software development. They will not only learn the fundamentals more successfully, but they will also develop habits and styles that will better server them in their careers as Computer Scientists.