Continous integration (CI) in teaching
Presenter: Philipp Kleer
Useful links
Presentation (PDF) in german
The GitLab project Philipp created
Context on CI/CD
CI/CD stands for continuous integration (CI) and continuous deployment (CD)
It is a concept used in software development and operation in order to create a
“pipeline” where new improvements are integrated into software already used by
users as easy and fast as possible.
These integrations are then checked for different aspects e.g., errors, if these
checks pass, the new version is deployed to the customer/user. The overall idea
is to reduce the time between changes in software and their arrival at the
user side and lower the potential for human errors.
The major way to try to achieve this goal is by automating a lot of the steps
between development and operational software at the user side.
GitLab provides a system on which GitLab’s users can build these automatic processes.
This automation system in GitLab can also be used for other tasks, that are not
necessarily tied to software development.
You can, for example create a process that automatically compiles a PDF of your
files in a GitLab repository every time you changed something in these files and
committed them to GitLab.
Why use git/CI in teaching
- Students who (later have to) work with datasets need skills and experience in collaboration
and project management as well as the corresponding tools (beyond Dropbox and E-Mail)
- With git/CI collaboration is better structured and each students part becomes more visible (in a group-work scenario)
- Controll/Correction workload for the instructor becomes less time consuming
- The logic of testing is changed: from single one-time submission to a more real life experiance with iterative steps
toward a sufficient solution.
Initial scenario: target group
- Implemented in a BA study program
- first practice in R/R Studio and social-science datasets
- Use of R Studio cloud license made the whole implementation possible in the first place.
Otherwise, the configuration effort would probably have been too high.
- About 20 students and 2 tutors
- Some students from the social sciences were not well experienced with information technology.
Course structure
- 4 learning-blocks 3x 1.5 hours
- three repetitions of code: preparation, practice on course, and obligatory “homework.”
How we made use of CI
- The usage of CI-stage “test” was sufficient to control synthax
- GitLab was chosen in order to teach students one of the major code-collaboration tools.
- Each task in a learning block got its own test.
- Students committed their solution, GitLab ran the pipeline, and it returned success or failure.
- Students had to read error reports (real world experience) and adjust their solutions accordingly.
- For testing the R code, the R-package
testthat
was used.
- Students were organised in subgroups of 4-5 per group.
Feedback from students
- Course had no unusual rate of dropouts.
- The use of the described system required an additional effort in
learning and understanding Git and GitLab.
- Next time,learning R, Git and GitLab will be split into two
different parts in the introduction phase of the course.