Abstract
Learning programming is a process that requires the study of programming principles and algorithms together with appropriate practice. Numerous support tools have been developed to assist lecturers and students in teaching and learning programming, respectively. This paper reviews the tools available; focusing on collaborative learning support functions, and presents an integrative model that provides collaborative features such as communication and social supports. This tool also provides the opportunity for lecturers to pay attention to the degree of progress of each student, which in turns this would motivate the students to learn programming.