Designing for Virtual Communities in the Service of Learning (Learning in Doing: Social, Cognitive and Computational Perspectives)