Learn how Dr. Shane Wilson saved time and boosted student performance with the help of GitHub Classroom and Travis CI
With some pre-semester planning, Dr. Shane Wilson was able to decrease the time he spent grading by 80 percent and increase the passing rate of his course from 76 to 90 percent. How did he help students get better grades and learn critical skills, reduce grading time, and scale up to hundreds of students? He combined GitHub Classroom with Travis CI, a service that can automatically generate builds and run tests.
Shane teaches a 12-week module in object-oriented programming with C++. His students are typically in the second year of an undergraduate program and, at Ulster University, third year students take part in internships. “They are usually attending interviews over the 12 weeks I teach them,” Shane said. To help them at this critical point, he wanted to prepare his students to have the confidence to say that they know modern development workflows. “It’s a real bonus for them to talk about using these tools in their student projects.”
At the beginning of the 12-week modules, Shane introduces his students to GitHub and Travis CI. In GitHub Classroom, he sets up an assignment with a template repository that contains a README with instructions for students, skeleton C++ classes, and a test suite that will run against the students’ code. The test suite is the core of an assignment repository: The students’ grades are set, in part, by what percentage of the tests pass when the assignment is due.
Along with starter code and tests, the repository also has configuration files, including a .travis.yml file. A Travis CI configuration file looks a bit like this:
language: cpp compiler: - gcc script: - make test
This configuration file in the repository tells Travis CI how to set up and run the tests. Because Shane already connected Travis CI to his module’s GitHub organization—which teachers can access as a benefit of joining GitHub Education—when a student pushes to their assignment repository or opens a pull request, GitHub automatically notifies Travis CI of the change. In turn, Travis CI clones the repository and runs the configured commands. For students, the flow of events looks like this:
Shane said when students get used to using GitHub and Travis CI, they come to appreciate the rapid feedback loop. Students don’t have to wait for work to be graded—passing and failing tests help them gain an understanding of their work each time they push to the repository. Shane suggested that failing tests can provide, “a hint or guidance on what might be wrong,” so students can iteratively improve on their work.
Shane explained that this setup has a huge impact on outcomes for students and how he teaches.
The most important result of this setup is that students in his module are more successful. In the past, only 51 percent of students passed the coursework after the first assignment. When GitHub Classroom and Travis CI were added to the mix, the passing rate rose to over 87 percent. He reported that the overall progression rate for the module went up from 76 to 90 percent. And students aren’t only performing better, they’re also more satisfied with the instruction they’re getting. Following the adoption of GitHub and other initiatives, Shane explained, “student feedback on the module was the best I have ever received in 18 years of teaching.”
Shane has also benefited because GitHub Classroom and Travis CI are saving him time and giving him new ways to guide students. Previously, reviewing and grading students’ work would take four to six weeks, but with automated tests, he’s spending a few days or a week at most to evaluate students’ programming assignments. The statistics that GitHub provides show him when and how students are contributing, presenting new opportunities to help students.
For example, he found that students who were struggling in the course were often waiting to push changes until shortly before the assignment deadline. The “Insights” tab on a repository told him when and how frequently students were adding commits. When students delayed, he could catch that early and give those students a nudge.
Shane noted that there’s still a lot of thought and effort in teaching students this way. He said that students still have to learn Git, which can be challenging to teach—though tools in the Student Developer Pack, like GitKraken, help. Travis CI can’t catch every bug (students can interrupt Travis CI with an infinite loop, for example), so he monitors for stalled builds. Shane said there’s also more thought and work at the beginning of the module, since that’s when he writes a test suite, that help him distinguish students’ performance.
But it’s worth the effort, Shane concluded, “The solution scales easily from a class of five to a class of 500.”
Want more information about GitHub Classroom and Travis CI?
- Get started with GitHub Classroom
- Learn more with Travis CI for beginners and Travis CI docs for .travis.yml
- Check out our post about real-time feedback for students using continuous integration tools
- CI/CD Fundamentals