Collaborative learning has been used extensively in undergraduate education to improve learning for all students. To improve performance in computer science courses, our study incorporated a new, although related, pedagogical approach entitled Collaborative-Adversarial Pair Learning (CAPL). The CAPL employs a software development technique called Collaborative-Adversarial Pairs (CAP) to teach computer science courses. We have demonstrated that CAP is effective in helping engineers discover software requirements. It seems a natural extension to use the techniques of CAP to help students discover concepts in computer science. In this paper, we describe the design and implementation of a CAPL model for a computer programming course (Software Engineering I), and then present the results of an evaluation of the model when compared to traditional instruction in Software Engineering I.