Collaborative programming in PERL: A case study of learning in groups described from an ecological psychology perspective