The goals

At the end of April, my buddy Matthieu Bruneaux and I gave a course on informatics in Turku. It was a three-day course and we had 15 students between PhD students and postdocs from the areas of Ecology and Genetics. I was gladly surprised that the dropout ratio was almost zero. Years ago, I attended a three-day course for learning how to use a computer program for phylogenetics and one third of the students dropped out each day.

The aim of our course was to teach good practices in informatics to scientists whose primary field is not computer science. Our goal was to provide some guidelines to biologists interested software development. We wanted to show some tools and techniques that scientists can use to develop/use scripts, or bigger software packages, in an efficient way. However, we received some feedback after the course and it appears that several students are no longer intimidated with the prospect of installing new software and running scripts that the can download from GitHub.

The language

It was difficult to decide the computer language that was going to be used during the exercises and demonstrations. We narrowed the selection to either R or Python. At the end we chose Python because I am more familiar with it ;-)

Although the idea was not to teach only programing but it was necessary to provide a quick introduction on how to program in Python.

The subjects

We covered almost all the subjects that are needed to be a seasoned programmer or user of computer programs:

  • Use of computer shell.
  • Use of git, GitHub.
  • Introduction to Python programming.
  • Code profiling.
  • Unit testing.
  • Continuous integration using Travis-ci.
  • Automated documentation with sphinx and doctests (readthedocs).
  • Creating Python modules.
  • Virtual environments.

During the course, Matthieu and I did some live coding, presented some theory, examples and exercises for each subject.

The problems

The live coding sessions were good because we made several mistakes and several errors were shown on the screen. So either the students realized that we were very silly or that making errors is very common when you do programming. I think is a positive thing to commit errors during the live coding sessions. Some students were quick in realizing the causes of the errors and were quick in point out the possible solutions. I think this makes learning much easier.

As in every course about programming, we had to fight with the variety of computers that the students brought to the course. We had Macs, Linux and Windows. Surprisingly the Windows machines caused no problems. All the software installed and ran without problems. It was the Macs that gave us headaches. I don't have a Mac so could not do any testing before hand. The most common problem was that the computers did not have the tools for compiling software (this was needed by the sphinx module). We tried to install them but it seems that the developer tools from the Mac weigh around 2 gigabytes!

We had little use for PowerPoint presentations. We gave part of the course on the computer terminal (iPython) and part from the GitHub pages. All the lessons are there and are still available. I was to lazy to do anything on PowerPoint or related. I just wrote my lessons in Markdown files and used GitHub to do the rendering. I think it was much better.

Things to improve

I think that next time we should buy more candy in advance. Matthieu provided cookies and chocolates from the second day. We had two big bowls with candy for the students. It was very popular and much needed as our levels of glucose needed a boost from time to time.

Assign half a day for making sure that all the software can be installed in all computers. It was distracting that some sessions had to be interrupted because some packages could not be installed in all the Macs.

Conclusion

I had a lot of fun teaching this course. I have been a postdoc for almost 5 years without doing any teaching. I decided to teach this course on informatics because I knew it would be fun.

I think that my use of Internet memes for my presentations were good. It helped get some points across the audience. Besides, it is good to have a laugh from time to time when you are teaching such arid subject as programming, continuous integration, virtual environments, etc.

Here is the link to the course outline, including links to the repository with the lessons in GitHub.

Tags: course Python Turku