Topic outline

  • General

    Best practices in programming

    Bern, 3-4 September 2012

    Target audience

    If the answer to two or more of the following questions is “yes”, then this course is for you.
    - Do you write software to analyze data or implement in-silico models as part of your daily work?
    - Do you write scientific publications based on software you created yourself but do not know what unit testing, refactoring or version control are?
    - Are you writing code that you find hard to understand some weeks later?
    - Do you have thousands of lines of code, but no automated way of verifying that the code works correctly?
    - Do you find yourself regularly using “copy & paste” to re-use code you wrote earlier?
    - Do small changes in your code later cause trouble in other unexpected places?

    Course objectives

    This course will help you avoiding the most common mistakes in the process of writing software in a scientific context and improve the quality of your code.

    The focus of this course is not object-oriented programming, software architecture, design patterns or algorithms. The goal of this course is to introduce skills and techniques for effectively developing software.

    Course structure

    The first day will give you an introduction into unit testing, refactoring and version control.
    The second and third days will focus on applying these principles in practice and include a clinic to help you to improve your own code.

    Participation and registration

    To help keep the course relevant to your work, we request that you fill out the survey. Additionally, we would like to encourage you to send us code that you work on and want to improve. During the code clinic, we will split into smaller groups and use the time to make improvements to the code submitted by the participants.

    You are expected to send the survey (to bernd.rinn at once registering so that the tutors have an overview of backgrounds and can give you advice on whether this course is for you. The participants will get feedback on whether they are accepted until July 20th.

    The course does not include an exam and does not give credit points. However, you will receive a certificate of participation that can be handed to your University for credit validation.

    Registrations are closed.


    Franz-Josef Elmer, Chandrasekhar Ramakrishnan, Bernd Rinn, Hannes Schabauer, Milan Simonovic, Jakub Straszewski

    Important note: participants must bring their own computers


    First Day
    10:00 Arrival
    10:15 Overview / Introduction
    10:30 Do’s and Dont’s in Programming and Debugging

    12:00 Lunch

    13:30 Refactoring
    14:30 Unit tests
    15:30 Coffee break
    15:45 Version control with Git I
    16:45 Coffee break
    17:00 Version control with Git II

    18:00-18:30 Socializing

    Second Day
    09:00 Live Demo ("Put it all together")
    10:00 Coffee break
    10:15 Code Clinic Session I

    12:00 Lunch

    13:30 Code Clinic Session II
    15:30 Coffee break
    15:45 Code Clinic Session III
    16:45 Coffee break

    Hotel suggestion: Kreuz Bern