We’ve been working for a number of years in how you can use collaborative learning in computer science courses, particularly introductory programming courses. We have explored more “pure” collaborative learning techniques in our courses, as well as cooperative learning (in our Specialised Programming course) and, more recently, Contributing Student Pedagogy (CSP). CSP differs from other forms of collaborative learning in that the student’s contribution is assessed both for its own technical merit, and also for its usefulness as a learning resource for others – i.e. the contribution that it can make to other student’s learning.
The ideas behind CSP are fairly similar to cooperative learning, in that the basis is that students will learn more effectively and more deeply when they are engaged in helping others learn, but the process and assessment structures are quite different. Cooperative learning tends to be fairly formally assessed and structured, with a student’s grade dependent, in part, on the result of others in their group. So they then become indirectly responsible for helping the other students learn as it will improve their mark. CSP takes a more community-base model, and is better suited – in my opinion – to teaching students genuine collaboration skills. In a CSP activity, the student is assessed directly on how well the contributions that they make can be used as learning resources by others. This may be a formal learning resource, such as leading a tutorial discussion or writing a sample exam question, or it may be quite informal, such as monitoring the discussions in a studio workshop or on an online collaboration learning system to see how well students support each other and explain their contributions.
CSP is a quite mature model of collaboration – students are expected to be able to take on the requirements of standard collaborative activities, which requires them to be able to exhibit teamwork skills, as well as the ability to take on multiple sources of information and integrate those into a single solution, along – of course – with the ability to integrate their own management and organisational processes with those of their team members. And then with CSP, they are also required to consider the learning of others – explicitly valuing the contributions of others for themselves, and developing contributions with others’ learning in mind. This diverse range of roles and skills required of students is not instantly developed! Much of the work in running a CSP activity is in helping students move between roles, and helping them develop the appropriate skills. For introductory courses, this scaffolding is even more important, as students tend to enter those courses looking for answers from the expert opinion in the room – that of the academic. However, we want them to start to listen to each other, and to take each other’s opinions seriously. This also means, of course, that the facilitators for activities need to also be aware of these roles, and to back away from the role of expert as needed, but in a way that still maintains sufficient scaffolding.
We have recently had a paper accepted for a special issue of Computer Science Education reviewing current work with CSP. Our paper, Structuring and Supporting “Contributing Student Pedagogy” in Computer Science Curricula, reviews our experiences with using collaborative and CSP-based activities across a range of courses, and looks at models for how you can more explicitly build and support the skills that students need in adopting and developing such a diverse range of skills as described above. Should be available later this year! In the meantime, if you are interested in reading more about CSP, this paper by Hamer et al is a great one to start with: Contributing Student Pedagogy, ACM SIGCSE Bulletin, 40(4):194-212.