Managing lecture slides using GIT and Reveal.js

Managing lecture slides using GIT and Reveal.js

  • Post author:
  • Post category:Blog
  • Post comments:0 Comments

I use to prepare my lecture using PowerPoint. It works quite well, except it is not version control friendly. This means that whenever I need to re-teach and modify the content of a course, I need to copy and paste all my slides before I can modify them. This results in a lot of redundant content accumulated in my folder over the years.

To solve this problem, I switch to Reveal.js for presentation so that I can version control my lecture slides. It does take a bit of work to convert all my previous slides into Reveal.js initially (BTW, I found a person who can help me to convert my slides with a fee, which saves me a lot of time. If you are interested, let me know). However, once that’s done, I can now use GIT to version control all my slides, which is super nice. Below is a screenshot of my current slides folder for CS3249: user interface development. Each lecture is now an html file which can be nicely version controlled and shared online if I want to.

To manage my slides from year to year, I create branches for different years. For example, below is a screenshot of how I manage my branches.

2016_s2 is a branch contains the slides for last year. 2017_s2 is the branch for this semester. I also create a 2017_s2_pre branch to place my pre-lecture slides. These slides contain partial information that allow the students to look at before or during the lecture, without the information I don’t want them to know before the lecture, such as in-class quizzes, etc.

The workflow of lecture modification is now the following:

  1. checkout the branch for final version (e.g., git checkout 2017_s2)
  2. work on the individual file (e.g., cs3249_week1_intro.html)
  3. commit the changes (e.g., git commit -am “bla”)
  4. check out the pre-lecture branch (e.g., git checkout 2017_s2_pre)
  5. merge the changes I made earlier on a particular lecture to the pre lecture branch (e.g., git checkout 2017_s2 Lecture/cs3249_week1_intro.html). (Note: this step is important since I don’t want to redo my changes again in this branch)
  6. remove or hide content I don’t want to share with the class before the lecture
  7. commit the changes for the pre-lecture branch
  8. done!


Shen is an HCI professor at the National University of Singapore working on realizing his vision of HeadsUp Computing, a new Interaction paradigm that can transform the way we live and interact with computers. In his free time, Shen loves to read, run, spend time with family and friends, and explore nature.

Leave a Reply