Prof. CI: Employing Continuous Integration Services and Github Workflows to Teach Test-driven Development

by   Christoph Matthies, et al.

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.


Novices' Learning Barriers When Using Code Examples in Open-Ended Programming

Open-ended programming increases students' motivation by allowing them t...

GoAutoBash: Golang-based Multi-Thread Automatic Pull-Execute Framework with GitHub Webhooks And Queuing Strategy

Recently, more and more server tasks are done using full automation, inc...

ARTENOLIS: Automated Reproducibility and Testing Environment for Licensed Software

Motivation: Automatically testing changes to code is an essential feat...

VSC-WebGPU: A Selenium-based VS Code Extension For Local Edit And Cloud Compilation on WebGPU

With the rapid development of information transmission, Software as a Se...

Visual Studio Code in Introductory Computer Science Course: An Experience Report

Involving integrated development environments (IDEs) in introductory-lev...

Flexible Development of Dependability Services: An Experience Derived from Energy Automation Systems

This paper describes a novel approach for the flexible development of de...

Statically Verifying Continuous Integration Configurations

Continuous Integration (CI) testing is a popular software development te...

Please sign up or login with your details

Forgot password? Click here to reset