Prof. CI: Employing continuous integration services and Github workflows to teach test-driven development

Teaching programming using Massive Open Online Courses (MOOCs) is gaining popularity due to their scalability and efficiency of knowledge distribution. However, participating in these courses usually means fully committing to the supplied programming environment in the browser. While this allows a consistent and controllable setup, learners do not gain experience with actual development tools, such as local code editors, testing frameworks, issue trackers or continuous integration (CI) services, which is critical for subsequent real-world projects. Furthermore, the tests for the functionality that is to be developed are oftentimes already available in MOOCs and simply need to be executed, leading to less involvement with developing appropriate tests. In order to tackle these issues while maintaining a high degree of automation and scalability, we developed Prof. CI, a novel approach to conducting online exercises. Prof. CI leverages the existing automation infrastructure that developers use daily, i.e. CI services and Github workflows, to teach test-driven development (TDD) practices. Participants work on their own repositories in Github and receive feedback and new challenges from the CI server when they push their code. We have successfully applied this approach in a pilot project with 30 undergraduate students learning the Ruby on Rails web development framework. Our evaluation shows that the exercise effectively increased students' motivation to write tests for their code. We also present the results of participant surveys, students' experiences and teachers' observations.

[1]  Philip M. Johnson,et al.  Automated Recognition of Test-Driven Development with Zorro , 2007, Agile 2007 (AGILE 2007).

[2]  David S. Janzen,et al.  A survey of evidence for test-driven development in academia , 2008, SGCS.

[3]  William Pugh,et al.  Helping students appreciate test-driven development (TDD) , 2006, OOPSLA '06.

[4]  David A. Patterson,et al.  MAGIC: Massive Automated Grading in the Cloud , 2015, CHANGEE/WAPLA/HybridEd@EC-TEL.

[5]  Christopher G. Jones Test-driven development goes to school , 2004 .

[6]  Jaakko Kurhila,et al.  Multi-faceted support for MOOC in programming , 2012, SIGITE '12.

[7]  Roy Williams,et al.  The Ideals and Reality of Participating in a MOOC , 2010, Proceedings of the International Conference on Networked Learning.

[8]  David S. Janzen,et al.  Test-driven learning in early programming courses , 2008, SIGCSE '08.

[9]  Jim Steel,et al.  A comparison of two iterations of a software studio course based on continuous integration , 2013, ITiCSE '13.

[10]  Christoph Meinel,et al.  Towards practical programming exercises and automated assessment in Massive Open Online Courses , 2015, 2015 IEEE International Conference on Teaching, Assessment, and Learning for Engineering (TALE).

[11]  Hélène Fournier,et al.  The value of learning analytics to networked learning on a personal learning environment , 2011, LAK.

[12]  David S. Janzen,et al.  Test-driven learning: intrinsic integration of testing into the CS/SE curriculum , 2006, SIGCSE '06.

[13]  Philip M. Johnson,et al.  Automated Recognition of Low-Level Process: A Pilot Validation Study of Zorro for Test-Driven Development , 2006, SPW/ProSim.