The poll for courses for DBIOL closed on 1st of October. This is the top 5 from the poll:

  • GIT
  • NUMPY
  • PACK
  • CLEANC
  • PANDAS

More information about dates and places will follow soon !

Full list of proposed courses

Hands-On PACK: Introduction to Code Layout + Packaging with Python

This hands-on introduces best practices how to organize Python code files and folders and tools from the Python ecosystem to distribute code. This includes uploading of code to the Python Package Index (https://pypi.python.org/pypi) so that others can install and uninstall your Python work with standard tools as pip or easy_install. Further we learn about virtualenv which helps you to keep your Python environment clean.

Topics:

  • Introduction to virtualenv
  • How to organize Python files in the file system: Python packages
  • How to structure code for automated testing
  • How to distribute Python code in the lab or in the world

Hands-On GIT: Introduction to bash and git

Git allows you to track changes in source code over time. So you can restore and inspect older versions or inspect specific changes without assigning file names like my_script_v23a.py. This makes git a valuable tool for scientists to support controlled and reliable reproduction of computation results. As this course introduces the git client on the comandline, we will first teach how to use the bash shell for this.

Beyond that git supports development of software in teams and in combination with online repositories as github or bitbucket it helps to share your code and to integrate improvements or fixes by others.

Topics:

  • Introduction to the base shell
  • git principles
  • How to use git locally
  • Introduction for using github / gitlab

Hands-On TEST: Introduction to automated testing with Python

  • required : PACK

Imagine the following ideal situation: After implementing a new feature of your software you press the "magic test button" and within seconds or a few minutes you get detailed feedback if you introduced errors or changed previous behavior of your software.

This is what automated testing is about. In this hands-on you will learn how to write code which tests other parts of your code to approach this ideal situation. Beyond this obvious advantage automated testing has many other positive effects on the way we develop software.

Topics:

  • Unit testing with Python
  • Regression testing
  • Best practices
  • Test Driven Development

Hands-On CLEANC: Clean Code / Principles of good software I

  • required: TEST, you should be able to use the command line of your computer.
  • recommended: Hands-ON GIT

In software engendering techniques exist to prevent programming mistakes during typing and to structure your code so that further improvements and extensions will be painless. This hands-on introduces basic techniques and best practices and hopefully will help to avoid scripts with thousands of knotted lines of spaghetti code.

Topics:

  • Basic principles: Good Names, DRY principle, etc.
  • Introduction to refactoring
  • Test Driven Development

Hands-On NUMPY: How can I replace Matlab with Python: Introduction to numpy, scipy and plotting

The Python ecosystem provides high quality libraries which support you to use Python for handling numerical data, numerical computations and data visualization. This makes Python a perfect candidate for replacing the commercial Matlab environment by an open source programming language with many other good properties. Python libraries as numpy or scipy are comprehensive and this hands-on will help you to get started to use them.

Topics:

  • Efficient handling of vectors and matrices with Python
  • Solving a linear equation system with Python
  • Curve fitting with Python
  • Introduction to matplotlib
  • Overview plotting libraries for Python

Hands-On HPC: Introduction to using the Brutus and Euler computing clusters

  • required: you should be familiar with the unix shell.

The HPC computing group of ETH offers two computing clusters for high-performance computations which are open for all members of ETH. Here we want to introduce how to use Euler and Brutus from the command line. computations.

Topics:

  • Introduction into bsub and related commands to control the clusters job system.
  • best practices, "Dos and Don'ts"

Hands-On PANDAS: How can I replace Microsoft Excel / R DataFrames in Python

  • recommended but not required: Hands-On NUMPY

Using Microsoft Excel during daily work is comfortable but limited in many situations and often error prone. Similar data structures exist in software libraries and usually called "data frames". The Python library pandas provides this kind of data structure and will help you replace Excel so you can automate tedious tasks, avoid errors and use the power of the Python programming language and its libraries.

Topics:

  • Reading / writing CSV or TSV files
  • Pandas introduction

Hands-On CMD: Best Practices for Command Line Scripts in Python

  • required : Hands-On PACK

Only writing a script for a specific task is often only a first step, making it usable by others is then the next challenge. Here we learn how to prepare a script so that others can install it in different environments without pain and that the execution of the script can be controlled by providing arguments and options on the command line. The feature to uninstall it clearly comes for free.

Topics:

  • How to write command line tools which can be distributed / installed / uninstalled.
  • How to handle command line options.
  • Basic introduction to logging with Python.

Hands-On ML: Introduction to Machine Learning with Python

  • required : Hands-On NUMPY

Machine learning algorithms are a basic building block in many modern data analysis strategies. This hands-on tries to introduce some basic concepts in order to understand fundamental principles and typical pit falls. The hands-on will be completed by practical experiments with the Python machine learning library scikit-learn. One goal is to keep the amount of mathematical formulas as low as possible, so knowing what a matrix is should be sufficient.

Topics:

  • Basic introduction Machine Learning
  • Typical machine learning workflow
  • Introduction to scikit-learn

Hands-On WS: Web services with Python

  • required: you know how to use virtualenv, if not attend Hands-On PACK.

Many databases as for chemical structures not only provide access by means of a web site but in the form of a so called web service as well. Being able to use such a service programmatically allows integration of such services in scripts for automated data processing. This hands-on explains basic concepts of so called RESTful web services, shows how to access such services from Python and finally introduces how to implement a minimal web service on your computer.

Topics:

  • Introduction HTTP protocol
  • Introduction RESTful web services
  • How to query a web service
  • How to implement your own basic web service

Hands-On OPTIM1 : Optimizing Python code for speed

  • required : Hands-On NUMPY, Hands-On PACK (or you already know how to use virtualenv)

Python supports fast and easy development but in some situation lacks speed, especially when processing large data sets. Often 90% of the total run time is spent in only 10% of the code. Here we learn how to find these parts and explain typical causes and some remedies.

Topics:

  • Optimization principles
  • How to measure speed
  • Typical causes for slow code and some remedies.

Hands-On OPTIM2: Optimizing Python code for speed with Cython

  • required : Hands-On PACK, Hands-On OPTIM1
  • C knowledge is helpful but not mandatory

We learn in OPTIM1 some techniques for speeding up Python code, but in situations as numerical computations on huge data sets they might not be sufficient and reimplementing a part of the Python code in a faster languages as C is the only solution. Here comes Cython to the rescue: Cython is a language very similar to Python which the Cython compiler translates to equivalent C code. This hands-on introduces Cython and shows how we can achieve the speed of C without learning a new (and more difficult) programming language.

Topics:

  • How to replace parts of slow code with C using Cython.

Hands-On IOO: Introduction object orientation with Python

  • required: more than six months of practical Python experience.

All data types in Python are so called objects, so Python programmers use objects all the time. In this course we will introduce how to implement your own objects and explain some basic concepts of object oriented programming.

Topics:

  • Introduction to object oriented programming

Hands-On CLEANC2: Principles of good Software II

  • required: Hands-On CLEANC, Hands-On IOO

This is a continuation of CLEANC and IOO and we will see how object oriented programming supports reusability and code quality.

Topics:

  • How to use object orientation right (intro to Design Patterns)
  • mock objects for testing