University courses about computer programming usually seek to provide students not only with technical knowledge, but also with the skills required to work in real-life software projects. Nowadays, the development of software applications requires the coordinated efforts of the members of one or more teams. Therefore, it is important for software professionals to master the sort of skills that assure the success of teamwork, such as communication, leadership, negotiation, or team management. However, these abilities are difficult to teach, one of the reasons being that they require true commitment from the students. However, today students are taking a more and more passive role in their own education, two of the more evident consequences being the increase in dropout rates and the decrease in marks obtained in exams. The NUCLEO e-learning framework has been designed to promote the effective acquisition of teamwork skills and, at the same time, to promote the more active participation of the students in their own learning process. NUCLEO adopts a socio-constructivist pedagogical approach that pursues the development of communities of practice for Problem Based Learning. Our research has rooted the design decisions of NUCLEO in the analysis of its socio-cultural environment with Activity Theory, which considers conflicts within groups as the impetus of their evolution and the forges of their environments. This paper presents the analysis of the main features of NUCLEO according to Activity Theory, as well as the experimental results obtained with the framework in three different case studies in university courses.