Online / 6 & 7 February 2021


ClassOps: pre-grading student assignments using CI pipelines

There are many things in which software can help grade computer science assignments, since these will consist mainly in executable pieces of code. However, in the same way DevOps will involve teams that code, test and set up infraestructure, ClassOps will have to add teachers to that equation. At any rate, it will imply that teachers will need to lay down in code the requirements of a student assignment (which can be as simple as testing for inclusion of a file or as complex of setting up the infrastructure to probe the code in different ways) and set up CI pipelines to actually test, and give meaningful (and fast!) feedback to the student so that it's included in their learning experience. This (lightning) talk will explain how the speaker set up that kind in infrastructure in Travis and, lately, GitHub actions, and how that resulted as a learning experience for him and his students.

For professors, grading is grunt work, and mostly done manually. As such, it's usually limited to the things that can be checked by hand. This eventually results in a very limited understanding of the learning process of students, lengthy grading process and bad learning outcomes for students. The first step is understanding grading as part of the learning process for students: it's simply a chance to give feedback to students so that they can fulfill their learning objectives. This needs to be done frequently and meaningfully. The second step is decoupling grading from your personal appreciation and setting it up as a functional requirement. Joining both things leads to automating grading as much as possible. While I had been using GitHub for turning in assignments for quite some time, I really started using CI pipelines in 2017, initially with Travis, and adding GitHub actions in 2019 when they started to admit people into the beta. They are used alongside each other now, making assignments undergo different kinds of tests, from (mild) plagiarism to, lately, setting up the student environment in a Docker container and run things inside it. The main idea of this talk will be how to pass from concept to (software) test, how the different tests have been set up, and what kind of obstacles have been found along the way. And, of course, if this has resulted in better learning outcomes for students.


Photo of Juan Julián Merelo Juan Julián Merelo