Friday, April 26, 2013

Introducing 32 students to Linux and Python via VirtualBox

I am currently teaching the Molecular Statistics course together with +Jimmy Charnley Kromann and +Jan Jensen at the University of Copenhagen. My part of the course is teaching the students how to program simple molecular simulation algorithms in Python. +Jan Jensen does the theoretical lectures, and I give lectures in basic Python programming and how to implement the equations from Jan.

One of the challenges we faced before the start of the course was to just get Python, Numpy and Matplotlib up and running on every single student's laptop. Since the students run everything from Windows XP, 7 and 8 to Linux and Mac, this can pose quite a challenge for the students, some of which have barely ever even installed a program before.

This year, we opted to create a VirtualBox with Ubuntu on it, and make sure everything the need throughout the course was pre-installed. The students could then simply download the VirtualBox program and install our VirtualBox image.

+Jimmy Charnley Kromann made this excellent video of how to get the VirtualBox going before the first class:

My biggest fear was that the students would be frightened and confused by their first meeting with a non-Microsoft system. But that (fortunately!) didn't turn out to be an issue at all.

These are my observation from the first lecture and first exercises class:
  • To my surprise all of the students had managed to bring their laptop with a working VirtualBox to the first class. ALL students! I was pretty thrilled since that meant they all could follow my programming from the projector on their own laptop, which is what I want them to do during my lectures.
  • What was going on on the projector was the same as on their laptop during the lecture, which I think help lessen the confusion.
  • We didn't have to do ANY tech support during the interactive lectures or the following exercises class to get Python working. Only hitch was two students who wanted American keyboard layout (our Box came with a Danish keyboard layout by default). This was quickly (though some might say awkwardly) solved by "setxkbmap us" in the terminal.
  • Some of the groups of students wanted an extra module to make a video of the things they had plotted in Matplotlib. +Jimmy Charnley Kromann then posted simple instructions and the relevant "sudo apt-get install" command on the course website -- so that went relatively easy as well.
  • Things which didn't work very well were the shared clipboard and drag-and-drop of files between the host OS and the VirtualBox. That only worked on 50% of the student's laptops. Must be a bug in VirtualBox somewhere.
  • I only overheard the sentence "Grrr, I hate linux!" once.

So far so good!


  1. Hi,

    Nice post.

    Two questions, as I am planning a similar approach for my class this fall.

    1. How large was the image you distributed?

    2. You write "What was going on on the projector was the same as on their laptop during the lecture". Do you mean that you have a way to show your computer's screen in their laptop's screen in real time? If yes, how do you do it?



  2. Dear Mihalis. Sorry for my late response!

    1) The image we distributed was 4GB - we hosted it on the course website. No students mentioned the download size as being an issue.

    2) What I meant was that the programs I was using for demonstration during lectures were -exactly- the same as the programs on the students' laptops. This was really useful, and questions like "What button do I press in order to do this particular thing?" were (relatively) easily answered during lectures. It might not be an issue for more advanced classes where students already have developed programming habits of their own.

    Best wishes,