Learning Computer Programming in CDIO’s Team Settings

Learning Computer Programming in CDIO’s Team Settings

Anh Phuong Pham, Duc Man Nguyen, Quoc Long Nguyen, Minh Thang Nguyen and Nguyen Bao Le

Programming or “coding” skill, for short, is an essential aspect in the training of every Software Engineering or Computer Science program. While certain individuals quickly digest various programming structures and become proficient in “coding”, most others usually go through difficult periods of time trying to understand different programming concepts, grasping certain programming syntax, and applying specific programming algorithms. Eventually, some still manage to “get it” but some others seem to never “get to anywhere”. So, the question become whether we may teach programming more efficiently, using the CDIO’s collective and cooperative learning approaches?

As opposed to what many think that programming can only be learned in an individual manner, many universities are increasingly teaching programming through small team projects in the junior’s and senior’s level. Assessment of the efficiency and effectiveness of such collective approach, however, are rarely made because of the general assumption that students must have learned programming individually in the introductory programming courses during their freshman’s or sophomore’s year. The whole point of learning programming in teams is sometimes only regarded as a team building activity at a number of universities. At Duy Tan University, during the last two years, we have attempted to teach programming in teams for freshman and sophomore students. By setting up standard programming projects for teams of 3 to 5 students and by using automated software testing tools like PC^2 and Themis, we have created quite some flexibility and synergy in the development of programming skills of our students. Initial responses from the students showed that teams of 3 instead of 4 or 5 produce better learning outcomes. In addition, by learning programming in teams, students pay more attention to the algorithm design and program testing, which they often ignore in an individual setting. For teams which did not realize the expected benefits,it mostly had to do with problems in their use of programming language(s) and syntax, for example, one team member is more comfortable with C++ while others are with Java, or the modules built by one member could not be integrated with others’ in the end because of conflicting interfaces. At the end of these courses, we carried out an individual final, and to our surprise, the results were significantly better than those of introductory programming courses, in which programming was taught in an individual manner. Generally speaking, learning programming in teams allow for more communication and mutual correction on the part of the students and more focused guidance and assessment on the part of our faculty members.

Proceedings of the 10th International CDIO Conference, Barcelona, Spain, June 15-19 2014

Go to top