F7-ALG2-3 - Learning Parallel Programming Through Programming Challenges

3. Research Full Paper
Guilherme Martins1 , Paulo Sérgio Lopes de Souza1, Sarita Bruschi1, Davi José Conte1
1 Universidade de São Paulo

This research full paper describes the use of challenges to teach parallel programming, regardless of teaching methodology (traditional, Problem-Based Learning and others) or programming-contest support systems. We verify how challenges contribute to the learning of parallel programming, consiering technical and motivational aspects. Studies demonstrate the potential of using programming contests as educational resources at the end of courses, encouraging students to practice and learn more about parallel programming. However, there are no proposals exploring programming challenges as part of the learning process, since the beginning of the course. This paper presents four different experiments applying challenges to teach parallel programming for undergraduate and graduate students. We evaluated different teaching/learning methodologies, contexts, educational resources (including programming marathon systems), and groups of students. Considering all the experiments, almost 250 students participated and were evaluated. We developed and applied 58 challenges to analyze theoretical and practical knowledge about parallel programming. Different metrics were used to evaluate the students during the experiments: theoretical assessments, source-code quality, program output correctness, and student ́s receptivity/motivation to learning from challenges. Results from experiments show scores of up to 96% of learning on technical aspects and up to 83% on student satisfaction.Challenges stimulated the development of high-quality parallel solutions and promoted a healthy environment among students, where the lightly-competitive context contributed to create a collaborative atmosphere. The use of programming marathon systems as an educational tool is not imperative. The use ofchallenges for the students’ learning, not on their classification, showed that it is possible to teach parallel programming, maintaining students focused and motivated.