Applying the DevOps methodology for a more efficient process of teaching-learning computer programming - Vicente, Andre; Cunha, Joao (Proceedings of the International Conference on European Association for Education in Electrical and Information Engineering, 2022)
Teaching and Learning programming languages in higher education, especially for the first-year students, is a major challenge due to two main factors: the ratio of students/teachers in these courses is usually very high, not allowing for a greater proximity between teachers and students; and these students have distinct backgrounds and logical reasoning, and therefore make progress at very different paces. Several studies show that the retention rates for such courses are high among the students in the introductory classes all across the globe. With the ever-increasing demand from the industry for professionals with programming skills, higher education institutions pressure the teachers for more positive results.The same demand for more efficiency and effectiveness is common in every sector of the industry, including software. DevOps is a software development methodology largely adopted by the software industry, that promotes the continuous improvement of the software development process. This methodology simplifies the problems across all development stages and promotes cooperation supported by the automation of tasks through tools and well-defined flows.This paper presents a method that explores the possibility to improve the process of teaching-learning computer programming, by recurring to the principles of DevOps to create an improved approach able to individualize learning and reduce the teacher's effort. A Moodle-based platform was developed with several mechanisms that 1) automate tasks such as providing learning materials and exercises to each student, controlling the performance of the work, and providing feedback to student and teacher; 2) allow teachers to receive quick feedback and focus on what really matters, i.e., the difficulties of the students, the preparation of new learning resources for each student or group of students; and 3) let the students practice and study at their own pace. A pilot experience took place with one teacher and the students of an introductory course of Programming. Although preliminary and with the participation of a reduced number of students, the obtained results are promising.