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 bsse.ethz.ch) 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.
Tutors:
Franz-Josef Elmer, Chandrasekhar Ramakrishnan, Bernd Rinn, Hannes Schabauer, Milan Simonovic, Jakub Straszewski
Important note: participants must bring their own computers
Schedule
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