This innovative laboratory approach gives students the hands-on experience, structure, and feedback necessary for learning C++ programming. Each laboratory is organized into four parts. Prelab assignments synthesize material from lecture and text to produce a series of working programs. Bridge exercises test the programs students have developed in preparation for the i-lab extension of their work. The post-lab sections assign written analysis topics to review the laboratory topics covered in the in-lab section.