Industry demands that graduates of programs in the computing sciences be able to work collaboratively in teams. However, students have often fallen short of the industry's expectations in this regard. Today, most universities have only one or two courses in which students work in small groups. This project is making use of an initial collaborative learning laboratory course with emphasis placed on teamwork, effectiveness of communication, and cooperation in problem solving. Students work together in small groups with the idea that, in later courses, they will gain experience in working with larger teams made up of people with a range of backgrounds and abilities. Since research shows that students' learning is improved by active involvement, this project uses an interactive-collaborative learning environment, building on several research projects which have investigated collaborative and interactive learning. Students meet regularly with the instructor in a laboratory situation. Very brief lectures are used to introduce the topics, while intensive laboratory work is used to explore the topics actively. The laboratory has modern groupware and a user-friendly software development environment with a physical arrangement that supports collaborative activities. This development environment also supports work conducted at remote sites.