Welcome to Scientific Programming with Python

This course will be run from September 2nd, 2014 and is now accepting students. Please contact schryer@ut.ee for more details.

Course material

All course material is available at the repository website hosted at GitHub.

Motivation for the course

The rapid changes we are witnessing with the internet revolution have also changed the way scientists and engineers must perform their work. Increasingly, the analysis of data requires basic programming skills; skills that are too often self taught using inappropriate tools.

This course provides students with hands on instruction on the use of tools that are widely used by both scientists and leading technology companies, yet is designed to be accessible for people with no programming experience.

Educational experts have studied why learning how to program is often prohibitively difficult. The best results have been obtained in learning environments where student misconceptions are addressed rapidly. A number of techniques have been shown to work, but they work best when the students understand their purpose. For this reason, the first topic of the course introduces the teaching methods and approach that will be used.

The course will be run in a series of 16 hands-on three hour segments. The first is an introduction to the course structure and installation of the required software. Note that all students will be required to bring a portable computer to all sessions.

Software Installation

Ideally, all students would come to the first lecture with a desire to install Linux and relevant Python packages alongside their current operating system. However, if one is not familiar with either of these it is recommended that students install Anaconda to acquire Python and associated computational tools. Please use Python version 3 because this is what we will be using. Instructors are available to aid in the installation process, however, it is recommended that students find help from a peer before arriving at the first half-day session.

Course content

The next three hour segment begins introducing the Python programming language using IPython notebook. Remaining segments will continue with core programming concepts, and continue on to introduce plotting with matplotlib, and components of both NumPy and SciPy while solving computational biology problems.

At the start of the second half of the course, students will be introduced to Linux, version control, and the Bash shell which are all essential tools for effective scientific programming. At this point students will begin to use an effective text editor such as emacs customized with emacs-for-python to edit their code with.

List of topics

First half of the course

  1. Teaching approach and software installation.
  2. Introduction to programming with Python.
  3. Use of IPython notebook to share data analysis in a reproducible form.
  4. Introduction to array processing using NumPy.
  5. Data visualization using matplotlib.

Second half of the course

  1. Introduction to Linux, version control with git and GitHub, and the Bash shell.
  2. Reading from and writing to files.
  3. Code organization and aspects of writing reusable code.
  4. Additional topics tailored for each student.
  5. Final project to be shared on GitHub.