I was chosen to work together with Gitlab on Courseware as Code! This collaboration is part of GSoC 2021, a project that pairs students with open-source projects to code away the summer. Well, I’ll actually do it during winter because I live in the southern hemisphere!

But what is Courseware as Code?

Courseware as Code brings the good practices of DevOps and CI/CD into the world of education. Using git for version control and markdown for formatted text, institutions will now be able to collaborate and keep track of their educational content. Now both students and educators can collaborate and add or fix content! It’s just one Merge Request away. Plus by using Gitlab CI/CD pipelines, new and novel ways of interacting with this content opens up.

There are two immediate wins from doing this:

  • No more valuable educational content being lost in old emails or extractable drives! Content will be safely shared with version control.
  • Everyone gets to collaborate! If a student notices an error on a slide, they can just open up a Gitlab issue mentioning it. Or even create a Merge Request fixing it themselves!

How we plan to make it possible

A big focus of this project is that it should be easy enough for non-tech savvy users to spin up their own Courseware as Code implementation. Just knowing git and markdown should be enough for anyone to create a course, slides and exams.

This can be achieved by having an user friendly template, but good documentation and tutorials should be a big priority as well. Of course power-users should be able to fork and modify our implementation if they need to do so!

Right now, the project has four big important pieces:

  • Course template: just like the Gitlab templates for jekyll or Hugo, we plan to create our own template for Courseware as Code. Since Gitlab pages are free for everyone, everyone can create their own educational course!
  • Exam and assignments templates: creating randomized quizzes, tests and assignments is not a trivial task. Especially if you try to do it manually! We plan to make this easier with this module. Educators should just write the questions, while we’ll take care of sending them out as Gitlab issues to their students.
  • DevOps and CI/CD tools for education: students should get recognized for their hard work and their growth. We’ll attempt to do this using CI/CD pipelines, that once they detect they have completed the given material it’ll give them badges for their growth and also unlock new, more challenging material (just like unlocking a new level in a video game!).
  • Dockerize everything!: all of our previous modules should be easy to use, well documented and reproducible. But making them use Docker would make running them even easier!

It’ll be interesting if the end result of Courseware as Code will follow these four pieces or if it will change during development! Let’s hope it ends up even better than we expected!

Interested? Stay in touch!

Since this project is completely open source, everything is welcome to chime in!

If you are interested in the project or have an idea for a feature you’d like to see implemented, feel free to create an issue in our repositories: